[求助] 关于try..catch的流程问题 比如有这样一段代码:try { A; B;} catch (Exception e) { }C;假如运行A的时候出现了异常,那么B还会被运行么?和异常代码无关的C会被运行么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 B不会运行,但是catch()后面的C仍然会被运行。这正是 try,catch的一个妙用。有的时候可能希望在程序抛出某个异常的时候才执行某些工作,例如,初始化某些信息。执行完这些工作,程序没有影响继续运行。 try-catch语句执行流程: 首先逐个从上到下执行try块中的java语句,如果没有发生异常,则执行完try块后跳过catch块(不论有多少个catch都跳过)。如果try块中某条语句存在异常,则跳到相对应的catch块中(发生什么异常,就跳到什么catch里,如果没有准确对应的,就跳到父类异常的catch中),执行完该catch块中的语句,然后跳过其它的catch块,接着往下走.总之,try-catch只能处理一个异常,这就是为什么后面通常跟finally,要有一个统一的出口。 比如: try{ int b=23/0; Thread.sleep(5000); } catch(ArithmeticException e){ System.out.println("除零错误!"); } catch(InterruptedException e){ System.out.println("延时错误!"); } 上面这个例子就会在屏幕上显示"除零错误!"四个字,因为众所周知,任何数字不能除0,所以25/0是错的,它抛出ArithmeticException(数学异常),则直接跳进第一个catch块内,而没有进入第二个块,尽管Thread.sleep(2000);也有异常。 假如运行A的时候出现了异常,那么B还会被运行么?B 不运行 。 直接跳到 catch 块。和异常代码无关的C会被运行么?异常 与 C 无关。C 还是做它该做的事。 try { A; B; } catch (Exception e) { } C; 假如运行A的时候出现了异常,那么B还会被运行么?和异常代码无关的C会被运行么?1.B不会运行2.c会执行 答:1)B不会被运行。2)C不一定会运行。若A抛出的异常如:AWTError异常,则C不会被执行。只有当异常是Exception或其子类时,C才会运行。不知道楼主的A抛出的是个什么“东西”啊? B 不运行 。 直接跳到 catch 块。 C正常运行。 求解 一道关于线程的题。。高手进 求简单的threadpool程序,急! 代码出现问题,急,求助! 框架中为什么看不到"test3"? 关于接口作为方法返回值 向高手求助(新手) 怎样用jbuilder调试java类 applet 支持socket嘛?? java添加(修改)一段查询数据库并返回的代码 关于JTale删除行的问题! 一个关于用SWING编写的登录窗体问题
这正是 try,catch的一个妙用。有的时候可能希望在程序抛出某个异常的时候才执行某些工作,例如,初始化某些信息。
执行完这些工作,程序没有影响继续运行。
首先逐个从上到下执行try块中的java语句,如果没有发生异常,则执行完try块后跳过catch块(不论有多少个catch都跳过)。如果try块中某条语句存在异常,则跳到相对应的catch块中(发生什么异常,就跳到什么catch里,如果没有准确对应的,就跳到父类异常的catch中),执行完该catch块中的语句,然后跳过其它的catch块,接着往下走.总之,try-catch只能处理一个异常,这就是为什么后面通常跟finally,要有一个统一的出口。
比如: try{
int b=23/0;
Thread.sleep(5000);
}
catch(ArithmeticException e){
System.out.println("除零错误!");
}
catch(InterruptedException e){
System.out.println("延时错误!");
} 上面这个例子就会在屏幕上显示"除零错误!"四个字,因为众所周知,任何数字不能除0,所以25/0是错的,它抛出ArithmeticException(数学异常),则直接跳进第一个catch块内,而没有进入第二个块,尽管Thread.sleep(2000);也有异常。
B 不运行 。 直接跳到 catch 块。和异常代码无关的C会被运行么?
异常 与 C 无关。C 还是做它该做的事。
A;
B;
} catch (Exception e) { }
C; 假如运行A的时候出现了异常,那么B还会被运行么?和异常代码无关的C会被运行么?1.B不会运行
2.c会执行
1)B不会被运行。
2)C不一定会运行。若A抛出的异常如:AWTError异常,则C不会被执行。只有当异常是Exception或其子类时,C才会运行。
不知道楼主的A抛出的是个什么“东西”啊?