浅析Java语言中两种异常使用的差别

来源:互联网 发布:关晓彤网络直播 编辑:程序博客网 时间:2024/05/17 23:19
<script type="text/javascript">google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//</script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>Java提供了两类主要的异常:runtime exception和checked exception。所有的checked exception是从java.lang.Exception类衍生出来的,而runtime exception则是从java.lang.RuntimeException或java.lang.Error类衍生出来的。 它们的不同之处表现在两方面:机制上和逻辑上。 一、机制上 它们在机制上的不同表现在两点:1.如何定义方法;2. 如何处理抛出的异常。请看下面CheckedException的定义: public class CheckedException extends Exception{ public CheckedException() {} public CheckedException( String message ) {  super( message );  }} 以及一个使用exception的例子: public class ExceptionalClass{ public void method1()   throws CheckedException   {   // ... throw new CheckedException( "...出错了" );  } public void method2( String arg )  {   if( arg == null )    {    throw new NullPointerException( "method2的参数arg是null!" );   }  } public void method3() throws CheckedException  {   method1();   }} 你可能已经注意到了,两个方法method1()和method2()都会抛出exception,可是只有method1()做了声明。另外,method3()本身并不会抛出exception,可是它却声明会抛出CheckedException。在向你解释之前,让我们先来看看这个类的main()方法: public static void main( String[] args ){ ExceptionalClass example = new ExceptionalClass(); try  {  example.method1();   example.method3(); } catch( CheckedException ex ) { } example.method2( null );} 在main()方法中,如果要调用method1(),你必须把这个调用放在try/catch程序块当中,因为它会抛出Checked exception。 相比之下,当你调用method2()时,则不需要把它放在try/catch程序块当中,因为它会抛出的exception不是checked exception,而是runtime exception。会抛出runtime exception的方法在定义时不必声明它会抛出exception。 现在,让我们再来看看method3()。它调用了method1()却没有把这个调用放在try/catch程序块当中。它是通过声明它会抛出method1()会抛出的exception来避免这样做的。它没有捕获这个exception,而是把它传递下去。实际上main()方法也可以这样做,通过声明它会抛出Checked exception来避免使用try/catch程序块(当然我们反对这种做法)。 小结一下: * Runtime exceptions: 在定义方法时不需要声明会抛出runtime exception; 在调用这个方法时不需要捕获这个runtime exception; runtime exception是从java.lang.RuntimeException或java.lang.Error类衍生出来的。 * Checked exceptions: 定义方法时必须声明所有可能会抛出的checked exception; 在调用这个方法时,必须捕获它的checked exception,不然就得把它的exception传递下去; checked exception是从java.lang.Exception类衍生出来的
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 辽宁干部 山西干部 学生干部 辽宁省干部 干部身份 离休干部 选拔干部 考察干部 青海干部网络学院 广东省干部网络学院 广东干部网络学院 少先队小干部 天津干部在线学习 广西干部网络学院 天津干部学习 山西干部在线学院 江西干部网络学院 山西干部学院 安徽干部教育 广东干部网络培训学院 干部网络学院 广元市干部网络学院 干部20字标准 河北干部网络学院 广元干部网络学院 安徽干部教育在线 福建干部网络学院 中国教育干部网络学院 广东干部网络培训 六零年代干部家属 中国干部级别一览表2017 竞选学生会干部演讲稿 新时代干部标准 鬼干部国语高清 青岛干部网络学院 优秀学生干部申请书 辽宁干部在线学习 广西干部网络学院手机板 别拿自己不当干部 广西经济管理干部学院 再制干酪