Java牛角尖【007】:Java中的Error能不能被Catch

网上看到很多朋友说Java中Error是无法Catch到的,而Java中定义的Error类型又很难测试到,那就估且以为确是如此吧。 
但是或许大家都有注意,我们时常会看到这样的代码 

Java代码 
  1. 1.  try{    
  2. 2.      ...    
  3. 3.  }catch(Throwable ex){    
  4. 4.      ...    
  5. 5.  }    

其中catch中直接捕捉的是一个Throwable类,打开继承关系看一下,Exception和Error两个类同样是从Throwable类继承而来,那么,也就是说Error应该是可以被捕捉的,下面写个例子证明一下猜测: 
Java代码 
  1. 1.  package net.moon.demo.errorcatch;    
  2. 2.      
  3. 3.  public class Demo {    
  4. 4.      
  5. 5.      /**  
  6. 6.       * @param args  
  7. 7.       */    
  8. 8.      public static void main(String[] args) {    
  9. 9.          // TODO Auto-generated method stub    
  10. 10.         try {    
  11. 11.             throw new MyError("My Error");    
  12. 12.         } catch (MyError e) {    
  13. 13.             System.out.println(e.getMessage());    
  14. 14.         }    
  15. 15.     }    
  16. 16.     
  17. 17. }    
  18. 18.     
  19. 19class MyError extends Error {    
  20. 20.     
  21. 21.     /**  
  22. 22.      *   
  23. 23.      */    
  24. 24.     private static final long serialVersionUID = 1L;    
  25. 25.     
  26. 26.     public MyError() {    
  27. 27.         super();    
  28. 28.         // TODO Auto-generated constructor stub    
  29. 29.     }    
  30. 30.     
  31. 31.     public MyError(String message, Throwable cause) {    
  32. 32.         super(message, cause);    
  33. 33.         // TODO Auto-generated constructor stub    
  34. 34.     }    
  35. 35.     
  36. 36.     public MyError(String message) {    
  37. 37.         super(message);    
  38. 38.         // TODO Auto-generated constructor stub    
  39. 39.     }    
  40. 40.     
  41. 41.     public MyError(Throwable cause) {    
  42. 42.         super(cause);    
  43. 43.         // TODO Auto-generated constructor stub    
  44. 44.     }    
  45. 45.     
  46. 46. }    

执行一下以上代码,正如前面的猜测,Error一样是可以捕捉的,运行代码结果为: 
Java代码 
  1. My Error    

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值