首页编程java编程java报错的提示有什么 java中的throw到底有什么用

java报错的提示有什么 java中的throw到底有什么用

编程之家2023-10-1283次浏览

大家好,关于java报错的提示有什么很多朋友都还不太明白,今天小编就来为大家分享关于java中的throw到底有什么用的知识,希望对各位有所帮助!

java报错的提示有什么 java中的throw到底有什么用

java问题:为什么报错

1.为什么会报错?

分析:

方法:JDK源码调试。由于JDK源码的局部变量不好跟踪,我采用把源码复制过来进行跟踪的方式。

java报错的提示有什么 java中的throw到底有什么用

看报错信息:

java.lang.StringIndexOutOfBoundsException: String index out of range: 2

at java.lang.String.charAt(String.java:686)

java报错的提示有什么 java中的throw到底有什么用

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项目都会出现此报错的原因是什么

【主回答】

运行时因为你使用的是工具,应该是你这个工具里面同时包含了多个不同的工程项目,这并不表示是你当前这个工程代码有错,可以将其从工程列表中先暂时关闭,而可能是其它工程存在问题。

检查下你其它工程是否有错,如果其它工程暂时不用,如果不需要再提醒,将上面的“始终运行而不询问”勾上即可。

java程序为什么会报错了还能运行

你不妨将Circ这个类中,除了main方法之外的所有方法都删了,这样你会得到提示,要求你实现所有抽象方法,

这时你按系统提示的解决方法:添加如下三个方法:

public float getAtea(float r){

throw new UnsupportedOperationException("Not supported yet.");

}

public float getCircum(float r){

throw new UnsupportedOperationException("Not supported yet.");

}

public void draw(){

throw new UnsupportedOperationException("Not supported yet.");

}

显然你没有实现所有的方法,可程序依然有错

再一细看

public float getArea(float r){

float area= Calculate.PI*r*r;

return area;

}

public float getCirccum(float r){

float circum=Calculate.PI*2*r;

return circum;

}

你的方法错了....

float getAtea(float r);

public float getArea(float r){

float area= Calculate.PI*r*r;

return area;

}

楼主现在明白了。。。

就是类没有实现你所继承的接口的方法,你在类中写的两个方法都不是继承自接口的

java中的throw到底有什么用

throw在java中是关于异常的操作。

首先异常在java中的意思是一些可以导致程序出问题的因素,比如书写错误,逻辑错误或者是api的应用错误等等,为了防止程序的崩溃就要预先检测这些因素,所以java使用了异常这个机制。

在java中异常是靠"抛出"也就是英语的"throw"来使用的,意思是如果发现到什么异常的时候就把错误信息"抛出"。

所以如果没有throw,发生异常,只能由java的最后一道防线jvm去处理,性质不一样。

扩展资料:

注意事项

throw代表动作,表示抛出一个异常的动作,throws代表一种状态,代表方法可能有异常抛出。throw用在方法实现中,而throws用在方法声明中,throw只能用于抛出一种异常,而throws可以抛出多个异常。

throw关键字用来在程序中明确的抛出异常,相反,throws语句用来表明方法不能处理的异常。每一个方法都必须要指定哪些异常不能处理,所以方法的调用者才能够确保处理可能发生的异常,多个异常是用逗号分隔的。

文章到此结束,如果本次分享的java报错的提示有什么和java中的throw到底有什么用的问题解决了您的问题,那么我们由衷的感到高兴!

java类型是什么意思(java是什么类型语言)java的api是什么 JAVA的API是什么意思