黑马程序员技术交流社区
标题:
关于异常抛出
[打印本页]
作者:
乔九
时间:
2012-10-19 00:17
标题:
关于异常抛出
class Demo
{
int div(int a,int b)throws Exception
{
return a/b;//
没有报错
int [] arr=new int[a];
System.out.println(a[4]);//
报错
}
}
class ExceptionDemo2
{
public static void main(String[] args)
{
Demo d=new Demo();
int x=d.div(4,0);
System.out.println(x);
}
}
为什么程序报的是数组错误:需要数组,而不是先报算术错:by/zero?
作者:
丁旭
时间:
2012-10-19 00:27
本帖最后由 丁旭 于 2012-10-19 00:31 编辑
1.a[4]是什么?应该是arr[4]吧?但是数组arr的长度不确定,你直接取arr[4],编译时会报错:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4。
2. return a/b;//后面的语句时不可能执行到的,编译时会报错:Exception in thread "main" java.lang.Error: Unresolved compilation problem: Unreachable code。
作者:
王威
时间:
2012-10-19 07:30
本帖最后由 王威 于 2012-10-19 07:32 编辑
class Demo
{
int div(int a,int b)throws Exception
{
return a/b;//没有报错,
首先这一句return执行完后下面语句根本就不会执行得到Unreachable code
//所以下面两句无效
int [] arr=new int[a];
System.out.println(a[4]);//报错,
就算有效,你这里应该是arr[4],其实是无效的
}
}
class ExceptionDemo2
{
public static void main(String[] args)
{
Demo d=new Demo();
int x=d.div(4,0);
//这个方法在调用的时候会有异常发生,你要么捕捉要么抛出,总之你得处理一下
System.out.println(x);
}
}
作者:
徐升兴
时间:
2012-10-19 08:12
lz你好,你的例子我给修改了一下,看这是不是你想要的异常:
class Demo2
{
public int div(int a,int b) //throws Exception,这句话不需要,主函数有处理语句了。
{
//return语句放在最后面执行。
int [] arr=new int[4];
System.out.println(arr[4]);
return a/b;
}
}
class ExceptionDemo
{
public static void main(String[] args)
{
Demo2 d=new Demo2();
try {
//这句话需要异常处理
int x=d.div(4,0);
System.out.println(x);
} catch (Exception e) {
e.printStackTrace();
}
}
}
控制台提示异常:java.lang.ArrayIndexOutOfBoundsException: 4 at baseForJava.Demo2.div(ExceptionDemo.java:9)
at baseForJava.ExceptionDemo.main(ExceptionDemo.java:21)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2