JAVA中的异常使用
????????異常是程序開發中的避不開的一個問題,特別是在大型應用的開發中,為了使程序能夠保持穩定的運行,即使出錯的時候,也能方便開發人員的根據錯誤信息快速定位出錯位置,這需要我們必須熟悉異常的基本知識。
Java異常中的關鍵字:
????? ? throw、throws、try、catch、finally。下面一段代碼簡單介紹這幾個關鍵字的應用場景
/*如果方法不進行異常處理,一定要用 throws 拋出*/ public static int div(int _x, int _y) throws Exception{ int result = 0; try{ // 可能出異常的代碼塊 }catch(Exception e){ // 捕獲異常并處理的代碼塊 e.printStackTrace(); // 打印異常信息 throw new Exception("異常A"); // 拋出一個自定義異常 }finally { // 不管是否有異常都要執行的代碼塊 return result; } }????throw與throws的區別:
????? ? throw用于在一個方法內部拋出一個自己創建的異常,throws則是用在方法頭的后面。用于告知該方法可能會拋出哪些異常給上層應用,注意此時上層應用必須在寫代碼的時候添加處理該異常的方法。
一個標準的基礎Java異常處理案例:
class MyMath{
??? /*如果方法不進行異常處理,一定要用 throws 拋出*/
??? public staticint div(int _x, int _y) throws Exception{
??????? int result = 0;
??????? System.out.println("【開始】進行除法計算");
??????? // 方式一
//??????? try{
//??????????? result = _x / _y;
//??????? }catch (Exception e){
//??????????? throw e;
//??????? }finally {
//??????????? System.out.println("【結束】除法計算完畢");
//??????? }
??????? // 方式二(簡寫)
??????? try{
??????????? result = _x / _y;
??????? }finally {
??????????? System.out.println("【結束】除法計算完畢");
??????? }
??????? return result;
??? }
}
public class Main {
??? public staticvoid main(String[] args) {
??????? try {
??????????? System.out.println(MyMath.div(10,0));
??????? } catch (Exception e) {
??????????? e.printStackTrace();
??????? }
??? }
}
????結果:
????
Exception與RuntimeException的區別:
????RuntimeException的類繼承關系:
????????java.lang.Object
????????????????java.lang.Throwable
????????????????????????java.lang.Exception
????????????????????????????????java.lang.RuntimeException
????區別概述:
????? ? Exception 是 RuntimeException 的父類(由上面關系知),使用 Exception 定義的異常都要去必須使用異常處理。????? ? RuntimeException 可以由用戶選擇性的來進行異常處理。
????常見的 RuntimeException 有:?
ClassCastException:????????????類型轉換異常 IndexOutOfBoundsException:索引越界 ????????NoSuchElementException:? ?沒有這個元素 ????????NullPointerException:? ? ?空指針異常自定義異常:
??? ? 直接繼承 Exception 或者是 RuntimeException 即可。不過注意命名的時候后面一定要加上 Exception 這樣做更加規范。總結
以上是生活随笔為你收集整理的JAVA中的异常使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中的程序设计模式--单例与多例
- 下一篇: 常用的HTTP请求头与响应头