Java語言學習(九):異常處理

    異常是程序中的一些錯誤,但並非全部的錯誤都是異常,而且錯誤有時候是能夠避免的。常見的三種異常類型有:java

  • 檢查性異常,如打開一個不存在的文件
  • 運行時異常,如數組越界
  • 錯誤,如棧溢出

    全部的異常類是從 java.lang.Exception 類繼承的子類,Exception類是Throwable 類的子類,以下圖所示:數組

 

    常見的非檢查性異常有:數組下標越界異常ArrayIndexOutOfBoundsException、空指針異常NullPointerException等,檢查性異常有:類未發現異常ClassNotFoundException,表示應用程序試圖加載類時,找不到相應的類,NoSuchMethodException表示請求方法不存在等等。指針

    捕獲異常,以下實例:調試

FileInputStream fis = null;
try{
   File file = new File("d:\\a.txt");
   fis = new FileInputStream(file);
}catch(FileNotFoundException e){
   e.printStackTrace();
}finally{
   try{
      fis.close(); //釋放資源
   }catch(IOException e){
      e.printStackTrace();
   }
}

    上面實例中使用的捕獲異常的方式是:try/catch 代碼塊,它的最簡單的用法爲:code

try
{
   // 程序代碼
}catch(ExceptionName e1)
{
   //Catch 塊
}

    固然,也能夠使用多重捕獲塊,即後面有多個catch塊,匹配不一樣的異常,finally塊屬於可選部分,不管是否發生異常,該代碼塊總會被執行,這裏可用來運行清理類型等收尾善後性質的語句,如資源的釋放等。繼承

    若是一個方法沒有捕獲一個檢查性異常,那麼該方法必須使用 throws 關鍵字來聲明。throws 關鍵字放在方法簽名的尾部。也能夠使用 throw 關鍵字拋出一個異常,僅可應用在方法體中,不管它是新實例化的仍是剛捕獲到的。用法以下:資源

//throws用法
public void Fun() throws Exception{
    //throw用法
    new throw Exception();
}

    除了Java中提供的異常類,咱們也能夠自定義異常類,須要繼承Exception類或者Exception的子類。最簡單的自定義異常類以下:字符串

public class FunException extends Exception{}

    在類中能夠提供一個無參構造方法和一個字符串參數的構造方法,方便輸出調試信息。io

相關文章
相關標籤/搜索