`

java异常

 
阅读更多

        RuntimeException、Error以及它们的子类都称为免检异常

所有其他异常都称为必检异常,也就是说,编译器会强制程序员检查并处理它们。

 

例如:

        NullPointerException、IndexOutOfBoundsException、IllegalArgumentException都是RuntimeException的子类,它们是免检异常,所以编译器不会强制程序员检查它们,只有运行之后才会发现这些错误。而必检异常会使得程序根本无法编译通过,只有修改后才能编译成功。

 

异常处理代码框架:

try{
    /////////////////////////
}
catch(type  ex){
///////////////////////////////
}

      可以在try块中直接throw一个异常,或者调用一个可能会抛出异常的方法。

 

异常处理有何优势:

       库方法通常可以检测出错误,但是只有调用者才知道出现错误需要做什么,所以异常处理最根本的优势就是将错误检测(由被调用的方法完成)从处理错误(由调用者完成)中分离。

 

注:

       如果方法p2可能会抛出一个必检异常,p1调用p2,那么必须如图这样编写代码:

void p1(){
      try{
       p2();
       }
       catch(IOException ex){
        ...............
       }
}


//或者这样写,也就是说,不处理异常,继续抛出,转让这个烫手山芋

void p1() throws IOException {
    p2();
}

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics