異常概述

異常:


1.異常時什麼? 是對問題的描述。將問題進行對象封裝。
異常體系
Throwable
|–Error
|–Exception
|–RunTimeException
異常體系的特點;異常體系中的所有類以及建立的對象都具有可拋性
也就是說可以被throw和throws關鍵字所操作
只有異常體系具備這個特點。


異常處理語句:
1. try
{
需要被檢測的代碼
}
finally
{
}

2.
try
{
需要被檢測的的代碼
}
catch()
{
處理異常的代碼
}
finally finally表示關閉代碼資源,因爲資源要釋放
{
一定會執行的代碼
}
3.
try
{}
finally
{}


throw定義在函數內,用於拋出異常對象。
throws定義在函數上,用於拋出異常類,要也可以拋出多個用逗號隔開。
當函數內容有throw拋出異常對象,並未進行try處理。需要在函數上聲明
注意RuntimeException除外。也就是說,函數內如果拋出的RunTimeException異常,函數上可以不用聲明

如果函數聲明瞭異常,調用者需要進行處理。處理方法可以調和throws,可以try

異常的好處:
1.將問題進行封裝。

2.將正常流程代碼和問題處理代碼相分離,方便與閱讀。

處理的原則
1.處理的方式有兩種:try 或着throws
2.調用到拋出類型異常的功能時,拋出幾個就處理幾個,一個try對應多個catch
3.多個catch,父類的catch放到最下面。
4.catch內,需要定義正對性的處理方式,不要簡單的定義printStakTrace 輸出語句。
也不要不寫。

當捕獲到的異常,本功能處理不了的,可以在繼續拋出。

編譯時異常: 程序正確,但因爲外在的環境條件不滿足引發。例如:用戶錯誤及I/O問題—-
程序試圖打開一個並不存在的遠程Socket端口。這不是程序本身的邏輯錯誤,而很可能是遠程機器名字
錯誤(用戶拼寫錯誤)。對商用軟件系統,程序開發者必須考慮並處理這個問題。Java編譯
器強制要求處理這類異常,如果不捕獲這類異常,程序將不能被編譯。

運行期異常: 這意味着程序存在bug,如數組越界,0被除,入參不滿足規範…..
這類異常需要更改程序來避免,Java編譯器強制要求處理這類異常。

自定義異常實例

  /*
    要求:當除數是負數時拋出異常
  1*/

class NegtiveException2 extends Exception        //繼承異常類Exception或者他的子類
{
    NegtiveException2(String msg){
      super(msg);
    }
}

class Demo2      
{
    int div(int a, int b) throws NegtiveException2  //定義除法方法
    {
      if (b<=0)
          throw new NegtiveException2("除數是負數");
      return a/b;
    }
}

public class ExceptionDemo
{
    public static void main(String[] args)
    { 
      Demo2 d = new Demo2();
      try
      {
         int x = d.div(4,1);
         System.out.println("x="+x);
      }
      catch (NegtiveException2 e)
      {
          System.out.println(e.toString());
      }
      finally
        {
           System.out.println("finally");
        }

           System.out.println("end");
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章