黑马程序员技术交流社区
标题:
遇到个小问题,求助ing。。。
[打印本页]
作者:
Rockray
时间:
2013-10-30 20:11
标题:
遇到个小问题,求助ing。。。
本帖最后由 Rockray 于 2013-10-31 09:30 编辑
class Demo {
public static void func(){
try {
throw new Exception();
System.out.println("A");
}
catch(Exception e) {
System.out.println("B");
}
}
public static void main(String[] args) {
try {
func();
}
catch(Exception e) {
System.out.println("C");
}
System.out.println("D");
}
}
复制代码
上面的代码中为什么会出现如下编译错误呢?
1.jpg
(15.97 KB, 下载次数: 45)
下载附件
2013-10-30 20:08 上传
而下面的代码一样没执行到一个输出语句,却编译通过了,这是什么原因?
class ExceptionDemo {
public static void main(String[] args){
Demo d = new Demo();
try{
int f = d.div(5,0);
System.out.println(f); //同样没被执行到,为什么编译通过了,而上面的代码编译失败
}
catch(ArithmeticException e){
System.out.println(e.toString());
System.out.println("除零啦");
}
System.out.println("over");
}
}
class Demo {
int div(int a,int b) throws ArithmeticException {
return a/b; //会出现算数异常,除数不为零
}
}
复制代码
作者:
未知数|X|
时间:
2013-10-30 20:28
本帖最后由 未知数|X| 于 2013-10-30 20:29 编辑
try {
throw new Exception();//执行到这时就会抛出异常也就是说它下面的语句永远不会执行到的,你在它下面写 首先编译就不会通过的
System.out.println("A");
}
try{
int f = d.div(5,0);//这是正常流程代码下面的会继续执行
System.out.println(f);
}
作者:
依旧
时间:
2013-10-30 20:31
上面报错的原因是: throw new Exception();表示一定会出异常,直接跳转到catch语句处理,而执行不到下面的 System.out.println("A");语句
而 System.out.println(f); 没有报错,是因为int f = d.div(5,0); 可能出异常也可能不出异常,下面这句话是有可能执行到的System.out.println(f);所以会出现你上面的情况!
希望对你有帮助!
作者:
王东
时间:
2013-10-30 20:55
那个语句在抛出异常之后一定不会执行
作者:
硬件之家
时间:
2013-11-3 22:48
try里面你都抛了,咋行
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2