[转载]抛出异常和捕获异常的区别

参考博客原址 http://www.noobyard.com/article/p-mvlpnaws-qe.html


 

抛出异常:如果程序中出现了异常,没有办法将具体的异常打印出来,不做任何处理

捕获异常:如果程序出现了异常,就能够详细的打印是什么原因导致了异常并且能够做出相应的处理,能够显示详细的Log

如果异常出现的话,会立刻终止程序,所以我们得处理异常:
1. 该方法不处理,而是声明抛出,由该方法的调用者来处理(throws)。
2. 在方法中使用try-catch的语句块来处理异常。
 

 

try catch书写格式:

                                  

try catch 代码案例:

                                 

 

 

异常(Exception)的分类:

根据在编译时期还是运行时期去检查异常
编译时期异常:checked异常。在编译时期,就会检查,如果没有处理异常,则编译失败。(如日期格式化异常)
运行时期异常:runtime异常。在运行时期,检查异常.在编译时期,运行异常不会编译器检测(不报错)。(如数学异常)
 

   

                      

 

throws语句   

throws总是出现在一个函数头中,用来声明该成员函数可能抛出的各种异常。

对大多数Exception子类来说,Java 编译器会强迫你声明在一个成员函数中抛出的异常的类型。如果异常的类型是Error或 RuntimeException, 或它们的子类,这个规则不起作用, 因为这在程序的正常部分中是不期待出现的。 如果你想明确地抛出一个RuntimeException,你必须用throws语句来声明它的类型。  

   throws语法格式:

                       修饰符   返回值 类型 方法名(参数) throws 异常类名1,异常类名2…{ }


       代码案例:

                          

 

 

 

throw语句   

throw总是出现在函数体中,用来抛出一个指定的异常。程序会在throw语句后立即终止,它后面的语句执行不到,然后在包含它的所有try块中(可能在上层调用函数中)从里向外寻找含有与其匹配的catch子句的try块。

               throw语法格式:

                                    

                 案例 

                                    

throw 是语句抛出一个异常;throws 是方法抛出一个异常;

异常类可以声明多个,用逗号分割就可以了。