浅析Java语言中存在两种主要非常的差别[Java编程]
本文“浅析Java语言中存在两种主要非常的差别[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Java供应了两类主要的非常:runtime exception和checked exception.全部的checked exception是从java.lang.Exception类衍生出来的,而runtime exception则是从java.lang.RuntimeException或java.lang.Error类衍生出来的.
它们的差别之处表目前两方面:机制上和逻辑上.
1、机制上
它们在机制上的差别表目前两点: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程序块(当然我们反对这种做法).
以上是“浅析Java语言中存在两种主要非常的差别[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |