java出现一个问题是什么(每次运行java项目都会出现此报错的原因是什么)
大家好,java出现一个问题是什么相信很多的网友都不是很明白,包括每次运行java项目都会出现此报错的原因是什么也是一样,不过没有关系,接下来就来为大家分享关于java出现一个问题是什么和每次运行java项目都会出现此报错的原因是什么的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
java问题:为什么报错
1.为什么会报错?
分析:
方法:JDK源码调试。由于JDK源码的局部变量不好跟踪,我采用把源码复制过来进行跟踪的方式。
看报错信息:
java.lang.StringIndexOutOfBoundsException: String index out of range: 2
at java.lang.String.charAt(String.java:686)
at java.util.regex.Matcher.appendReplacement(Matcher.java:703)
at java.util.regex.Matcher.replaceFirst(Matcher.java:861)
at java.lang.String.replaceFirst(String.java:2146)
at test.Test.main(Test.java:11)
主要是在charAt这里出的数组越界错误。
而是由appendReplacement这里调用charAt引起的。
下面分析appendReplacement源码:
去掉一些
与出错无关的代码,简体下此源码。如下:
public static void appendReplacement(StringBuffer sb, String replacement){
int cursor= 0;
StringBuffer result= new StringBuffer();
while(cursor< replacement.length()){
char nextChar= replacement.charAt(cursor);
if(nextChar=='\\'){
cursor++;
nextChar= replacement.charAt(cursor);
result.append(nextChar);
cursor++;
} else{
result.append(nextChar);
cursor++;
}
}
}
这里的sb为(new StringBuffer("\\"),replacement为D:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\MMS\\Resource\\
replacement太长,我简化的e\\
下面看:
他会把字符串的每个字符截取e,\
第一个e没问题
第二个\时进入
if(nextChar=='\\'){
cursor++;//为2了
nextChar= replacement.charAt(cursor);//相当于e\.charAt(2),当然出错,所以此时应该考虑把\\换为\\\\
result.append(nextChar);
cursor++;
}
D:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\MMS\\Resource\\\\这样就不出错了
2.如果去掉最后的反斜线倒是不报错了,可是为什么用于替换的字符串被改变了?
解决方法见上
java中出现的问题
将测试类Test4修改为:
public class Test4{
public static void main(String args[]){
Person lxh1= new Person();
lxh1.setName("李蓉");
lxh1.setAge(21);
lxh1.tell();
}
}
一般调用方法的时候要仔细看,首先getName()这个方法是public的,说明在别的类里面是可以用的,但是,lxh1.getName("李蓉");说明getName(String name)最起码是要有参数,但是你定义的方法是没有参数的。而且这个例子主要是联系类的get和set方法的使用,所以是你的使用不当造成的
java问题 ~~求教高手 13) 以下关于异常的说法,错误的是
选择D
我在这只说下 erroer和Exception的区别
error是错误,这个错误是由于java虚拟机引起的是程序员无法通过更改代码解决的,所以这种错误我们不需要抛出异常
Exception这就是我们所说的异常我们知道 java分为2步第一编译如果编译没有通过,那叫做
语法错误编译通过而在第二步运行的时候产生的错误(此错误不是上面说的error)叫做异常.
而异常的解决方案有多重
常见的有 1在方法签名处抛出异常
2在需要扑捉异常的地方用try catch语句来捕捉
java语言采取了一个统一的异常处理机制。
什么是异常?运行时发生的可被捕获和处理的错误。
在java语言中,Exception是所有异常的父类。任何异常都扩展于Exception类。Exception就相当于一个错误类型。如果要定义一个新的错误类型就扩展一个新的Exception子类。采用异常的好处还在于可以精确的定位到导致程序出错的源代码位置,并获得详细的错误信息。
Java异常处理通过五个关键字来实现,try,catch,throw,throws, finally。具体的异常处理结构由try….catch….finally块来实现。try块存放可能出现异常的java语句,catch用来捕获发生的异常,并对异常进行处理。Finally块用来清除程序中未释放的资源。不管理try块的代码如何返回,finally块都总是被执行。
Java异常分为两大类:checked异常和unChecked异常。所有继承java.lang.Exception的异常都属于checked异常。所有继承java.lang.RuntimeException的异常都属于unChecked异常。
当一个方法去调用一个可能抛出checked异常的方法,必须通过try…catch块对异常进行捕获进行处理或者重新抛出。
每次运行java项目都会出现此报错的原因是什么
【主回答】
运行时因为你使用的是工具,应该是你这个工具里面同时包含了多个不同的工程项目,这并不表示是你当前这个工程代码有错,可以将其从工程列表中先暂时关闭,而可能是其它工程存在问题。
检查下你其它工程是否有错,如果其它工程暂时不用,如果不需要再提醒,将上面的“始终运行而不询问”勾上即可。
文章到此结束,如果本次分享的java出现一个问题是什么和每次运行java项目都会出现此报错的原因是什么的问题解决了您的问题,那么我们由衷的感到高兴!