java异常问题
发布网友
发布时间:2022-10-13 05:06
我来回答
共4个回答
热心网友
时间:2023-10-30 06:10
打印
Exception in method
After the method call
异常分两种:
1:编译时被检查的异常,只要是Exception及其子类都是编译时被检测的异常。
2:运行时异常,其中Exception有一个特殊的子类RuntimeException,以及RuntimeException的子类是运行异常,也就说这个异常是编译时不被检查的异常。
而RuntimeException的优先级比Exception 要高,所以在System.out.print(s.charAt(3));出错时,优先被RuntimeException处理掉了,而处理掉了异常,异常就被消耗了,上面就不需要捕获处理了,上面的调用便可以正常的运行下去。所以"After the method call"被打印
热心网友
时间:2023-10-30 06:10
try
{
String s="abc";
System.out.print(s.charAt(3)); //这里访问的3是指字符串的第四个位置,会产生越界异常
}
catch (RuntimeException ex)
{
System.out.println("RuntimeExceptin in method");
System.out.println( ex ); //加上这句,可以看出错误信息
}
运行输出:
RuntimeExceptin in method
java.lang.StringIndexOutOfBoundsException: String index out of range: 3
After the method call
热心网友
时间:2023-10-30 06:11
输出结果:
RuntimeExceptin in method
After the method call
原因:在method方法中的runtimeexception捕获中处理了下标越界,即一下这段代码产生的下标越界
String s="abc";
System.out.print(s.charAt(3));//3移到与数组长度
捕获后直接输出了RuntimeExceptin in method这句话,没有往上抛异常,所以在main方法中只有After the method call输出
热心网友
时间:2023-10-30 06:11
RuntimeExceptin in method ->这是方法中的异常处理
After the method call ->在main方法中没有异常,所以会输出try块中的内容