A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 絮缘小默 中级黑马   /  2014-3-22 18:04  /  1161 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

使用try catch语句块的问题
当try语句块里产生一个错误,然后捕获,那么错误代码后面的代码是否还会运行?
如果使用throw语句明确引发一个错误呢?

9 个回复

倒序浏览
错误代码后面的代码不运行,直接运行catch里的代码
回复 使用道具 举报
你看看这两种情况,是否复合你所说的
  1. class Test

  2. {

  3.    
  4.     public static void main(String args[]){
  5.            
  6.             try{
  7.                     int[] i={1,2,3};
  8.                     System.out.println(i[5]);
  9.             }
  10.             catch(Exception e){
  11.                     System.out.println("in  try-catch");
  12.             }
  13.            
  14.             System.out.println("after try-catch");

  15.            
  16.             error_test();
  17.     }
  18.    
  19.    
  20.     static void error_test(){
  21.             try {
  22.                     int[] i={1,2,3};
  23.                     System.out.println(i[5]);
  24.                 } catch (Exception e) {
  25.                         // TODO: handle exception
  26.                         throw new RuntimeException("出错了");
  27.                 }
  28.            
  29.             System.out.println("after try-catch-throw");
  30.     }

  31. }
复制代码
结果:

QQ截图20140322182137.png (5.5 KB, 下载次数: 29)

QQ截图20140322182137.png

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
捕获到异常后try语句中异常后面的语句是不会执行的。但是如果有finally的话无论是否捕获到异常。finally里面的代码都会执行。如果用throw抛出异常。如果真的有异常,后面的代码就不会执行了。没有的话就会执行
回复 使用道具 举报
楼主你好,错误后面的代码是否执行在于你在异常处理程序中是怎么处理的,一般错误代码后面的代码不会执行,但如果是恢复性的异常处理,当异常处理完毕后异常后面的代码可能会执行,请看下面的代码:
  1. public class Demo{
  2. public static void main(String[] args){
  3. int a=0;int b=200;  
  4. while(a++){
  5. try{
  6. System.out.println(a/(b--));
  7. }catch(RuntimeException e){
  8. b=b-1;
  9. }
  10.    
  11. }





  12. }
  13. public static int Demo1(int a,int b)throw RuntimeException{
  14.    if(b==0){
  15.   throw new RuntimeException("除数不能为零");
  16. }


  17. }




  18. }



复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
错误后面的代码是不运行的直接执行catch的语句
使用throw出现错误也不会运行错误代码后面的代码
回复 使用道具 举报
建议先把异常学完再问这样的问题。
回复 使用道具 举报
错误后面的代码不会执行,使用throw会把代码产生的异常抛出。
回复 使用道具 举报
muma 中级黑马 2014-3-23 09:00:58
9#
建议楼主认真听看老师视频
回复 使用道具 举报
错误代码后的代码不会执行了,出错后就去找相应的catch,如果找到配对的就执行对应的catch,如果没有对应的catch,就执行finally
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马