日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java异常处理及异常机制介绍

發布時間:2025/4/16 java 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java异常处理及异常机制介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java異常處理及異常機制介紹

 當出現程序無法控制的外部環境問題(用戶提供的文件不存在,文件內容損壞,網絡不可用...)時,JAVA就會用異常對象來描述。

  JAVA中用2種方法處理異常:

  1.在發生異常的地方直接處理;

  2.將異常拋給調用者,讓調用者處理。

  JAVA異常可分為3種:

  (1)檢查性異常:java.lang.Exception

  (2)運行期異常:java.lang.RuntimeException

  (3)錯誤:java.lang.Error

  頂層是java.lang.Throwable類,檢查性異常,運行期異常,錯誤都是這個類的子孫類。

  java.lang.Exception和java.lang.Error繼承自java.lang.Throwable,而java.lang.RuntimeException繼承自java.lang.Exception.

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

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

  錯誤------一般很少見,也很難通過程序解決。它可能源于程序的bug,但一般更可能源于環境問題,如內存耗盡。錯誤在程序中無須處理,而有運行環境處理。

  如何處理異常?

  1.try...catch

  程序運行產生異常時,將從異常發生點中斷程序并向外拋出異常信息。

  Java代碼

  int x = (int)(Math.random()*5);

  int y = (int)(Math.random()*10);

  int[] z =new int[5];

  try

  {

  System.out.println("y/x="+(y/x));

  System.out.println("y="+y+"z[y]="+z[y]);

  }

  catch (ArithmeticException exc1)

  {

  System.out.println("算術運算異常:"+exc1.getMessage());

  }

  catch (ArrayIndexOutOfBoundsException exc2)

  {

  System.out.println("數據越界異常:"+exc2.getMessage());

  }

  說明:ArithmeticException和ArrayIndexOutOfBoundsException都屬運行期異常:java.lang.RuntimeException,如果不用try...catch捕獲,程序也是可通過編譯的,但如果屬于檢查性異常:java.lang.Exception,必須而且一定要用try...catch...對其進行處理。

  2.finally

  如果把finally塊置try...catch...語句后,finally塊一般都會得到執行,它相當于一個萬能的保險,即使前面的try塊發生異常,而又沒有對應異常的catch塊,finally塊將馬上執行。

  以下情形,finally塊將不會被執行:

  (1)finally塊中發生了異常;

  (2)程序所在線程死亡;

  (3)在前面的代碼中用了System.exit();

  (4)關閉CPU。

  3.多個異常的處理規則:

  定義多個catch可精確地定位異常。如果為子類的異常定義了特殊的catch塊,而父類的異常則放在另外一個catch塊中,此時,必須滿足以下規則:子類異常的處理塊必須在父類異常處理塊的前面,否則會發生編譯錯誤。所以,越特殊的異常越在前面處理,越普遍的異常越在后面處理。這類似于制訂防火墻的規則次序:較特殊的規則在前,較普通的規則在后。

  自己也可以定義并拋出異常,方法是2步:創建異常,拋出異常(首先實例化一個異常對象,然后用thow拋出)合在一起就是----

  thow new IOException("異常說明信息")。將創建異常,拋出異常合在一起的好處是:創建異常時,會包含異常創建處的行信息,異常被捕獲時可以通過堆棧跡(stack Trace)的形式報告這些信息。如果在同一行代碼創建和拋出異常,對于程序的調試將非常有用。

  所以,thow new XXX()已經成為一個標準的異常拋出范式。

  在定義一個方法時,方法塊中調用的方法可能會拋出異常,可用上面的thow new XXX()處理,如果不處理,那么必須在方法定義時,用thows聲明這個方法會拋出的異常。

  對異常的處理,有一條行之有效的默認規則:向上拋出-----被調用類在運行過程中對遇到的異常一概不作處理,而是直接向上拋出,一直到最上層的調用類,調用類根據應用系統的需求和特定的異常處理規則進行處理,如向控制臺輸出異常堆棧信息,打印在日志文件中。用一句形象的話來說,就是誰使用,誰(最上層的調用類)處理。

總結

以上是生活随笔為你收集整理的Java异常处理及异常机制介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。