成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解異常處理機制

開發 后端
當一個程序出現錯誤時,它可能的情況有3種:語法錯誤,運行時錯誤和邏輯錯誤。語法錯誤是指代碼的格式錯了,或者某個字母輸錯了;運行時錯誤是指在程序運行的時候出現的一些么有想到的錯誤,如:空指針異常,數組越界,除數為零等;邏輯錯誤是指運行結果與預想的結果不一樣,這是一種很難調試的錯誤。

當一個程序出現錯誤時,它可能的情況有3種:語法錯誤,運行時錯誤和邏輯錯誤。語法錯誤是指代碼的格式錯了,或者某個字母輸錯了;運行時錯誤是指在程序運行的時候出現的一些么有想到的錯誤,如:空指針異常,數組越界,除數為零等;邏輯錯誤是指運行結果與預想的結果不一樣,這是一種很難調試的錯誤。而java中的異常處理機制主要是指處理運行時錯誤,即異常就是運行時錯誤。

產生異常的原因有3中:1.java內部發生錯誤,java虛擬機產生的異常。2.編寫程序的時候由于錯誤引起的異常,如:空指針異常,數組越界等。3.通過throw語句生成的異常。這種異常通常稱為“檢查異常”,用來告知方法的調用著相關信息。

java通過面向對象的方法處理異常。在一個方法的運行過程中如果出現了異常,這個方法就會產生代表該異常的一個對象,把它交給運行時系統,運行時系統尋找相應的代碼來處理這一異常。其中,生成異常對象,并把它交個運行時系統的過程稱為拋出(throw)。運行時系統在方法的調用棧中查找,直到找到能處理該異常的對象的過程稱為捕獲(catch)。

一、異常的分類

在java中,任何異常都屬于java.lang.Throwable類或其子類,Throwable類又分為Exception類和Error類。其中Exception類用于用戶所出現的各種異常,它也可用來創建自定義類型的類。Error類異常是指java程序運行時與運行是系統本身有關的錯誤,這些異常通常是災難性的,不是程序可以控制的。

Exception類的異常又分為運行時異常和非運行時異常。其中運行時異常是指RuntimeException類及其子類,這些異常不檢查異常,可以選擇捕獲處理,也不可以不處理。非運行時錯誤是除RuntimeException類以外的異常,這些異常必須處理,否則會導致程序編譯不能通過。

二、異常處理機制

處理異常的方式主要有兩種:積極的處理方式和消極的處理方式。

積極的處理方式主要是使用try...catch,程序先執行try中的語句,當try中的語句出現異常時,就停止當前程序的執行,轉入到catch中執行語句,若catch語句中出現異常,程序也會停止執行,然后轉到catch的下一個程序繼續執行。也就是說try語句用來發現異常,而catch語句用來處理異常。通常在catch語句后會跟一個final語句,與try...catch語句結合使用,無論try和catch中是否出現異常,final中的語句都會直線。如果一個方法必須返回一個值的話,那么把return語句放到final中最合適了,因為要是放到try或catch中的任何一個,如果運行過程中出現異常的話,程序就會停止執行,也就無法執行retrun了。

消極的處理方式是指用throw和throws來實現。throw會主動拋出一個異常,并終止程序的運行。throws用在方法后面,表示聲明一個異常,告訴方法的使用者方法中出現了哪些異常,讓使用者根據自己的情況處理這些異常。

1.try...catch語句格式

 

 

catch語句的參數包括一個異常類型和一個異常對象,異常對象必須為Throwable的子類,指明了catch語句可以處理的異常類型。catch語句可以有多個,分別處理不同類型的異常。一個catch語句也可以捕捉多個異常類型,此時,catch的異常類型參數應該是這些異常類型的父類。

下面是一個try...catch語句的使用實例:

 

 

這里的e表示產生的異常對象,通過toString()方法可以獲得產生異常的原因,用printStackTrace()方法可以獲得產生異常的原因及其位置。

2.多個catch語句

當某個程序塊可能出現錯個異常時,可以用多個catch語句,每個catch語句捕獲一種異常,當拋出異常時,每個catch一次檢查。當***個catch語句執行時,其它的catch語句暫不執行,而當該catch執行結束后就會一次執行下一個catch語句。

要注意的是:當使用多個catch語句時,catch語句塊要有先后之分。如果父類異常在子類異常前面的話,首先執行的是父類異常,子類異常將永遠不會執行,這樣在程序運行的時候就會出現錯誤。

3.final語句

前面介紹過,不管try和catch語句時候會出現異常,final語句都會執行。final執行的情況有以下三種:

(1)如果try語句中沒有出現異常,則執行完try語句后就會執行final語句,接著執行其后的語句。

(2)如果try語句出現異常,并且拋出的異常被catch捕捉到的話,程序的執行就會在出現異常地方停止,轉而執行與之相匹配的catch語句,***執行final語句,如果final語句沒有出現異常,則繼續執行下面的語句,如果final語句出現異常,就把該異常傳遞給該方法的調用者。

(3)如果try語句中拋出的異常沒有被catch語句捕捉到,將直接執行final語句,并把該異常傳遞給該方法的調用者。

三、拋出和聲明異常

1.拋出異常

可以使用throw語句拋出異常,它的基本形式是

 

 

這里ThrowableInstance一定是Throwable類或者它的一個子類

2.聲明異常

如果一個方法可以導致一個異常但不處理該異常,就可以使用throws語句來聲明該異常,其基本形式是:

 

 

一個throws字句列舉了一個方法可能出現的所有異常類型,各個異常類型之間用逗號隔開。Error和RuntimeException子類的異常不需要在異常的列表中指定,而其它類型的異常必須進行指定聲明,否則編譯的時候就會出現錯誤。

四、自定義異常

java內置的異常能夠處理大多數常見的運行時錯誤,但也可以自己定義,自定義異常通常重載Exception構造方法來得到。例如:

 

責任編輯:金賀 來源: JavaEye博客
相關推薦

2010-03-05 15:40:16

Python異常

2023-06-15 14:09:00

解析器Servlet容器

2011-07-21 15:20:41

java異常處理機制

2021-03-02 09:12:25

Java異常機制

2023-02-23 08:15:33

Spring異常處理機制

2021-07-03 17:53:52

Java異常處理機制

2011-04-06 10:27:46

Java異常處理

2024-03-04 10:00:35

數據庫處理機制

2009-08-05 18:09:17

C#異常處理機制

2023-03-08 08:54:59

SpringMVCJava

2009-09-02 18:34:28

C#鼠標事件

2021-03-25 07:44:39

C++異常處理開發技術

2015-12-28 11:25:51

C++異常處理機制

2011-07-01 14:20:59

Qt 事件

2011-07-01 14:14:34

Qt 事件

2025-06-09 01:15:00

2025-06-25 06:18:46

Linux多線程機制

2009-06-02 10:32:30

Oracle并發處理

2009-07-09 18:15:42

JDBC事務處理

2009-07-31 11:28:42

錯誤處理機制ASP.NET
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91久久精品 | 99精品国产一区二区三区 | 精品免费看 | 可以看黄的视频 | 成人av网站在线观看 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 久久精品女人天堂av | hitomi一区二区三区精品 | 2022精品国偷自产免费观看 | 亚洲综合在线一区二区 | 久久久久久成人网 | 精品久久久网站 | 成人午夜免费在线视频 | 黄色片大全在线观看 | 91日日 | 亚洲免费精品 | 欧洲视频一区 | 中文av字幕 | 国产高清视频在线观看 | 日韩中文字幕在线视频观看 | 蜜臀网站 | 免费在线观看av网站 | 国产欧美一区二区精品久导航 | 精品免费国产视频 | 91视频亚洲 | 91色综合 | 91亚洲国产 | 国产精品成人在线 | 欧美专区在线视频 | 国产精品久久 | 成人高清视频在线观看 | 在线观看www | 精品亚洲一区二区 | 日本一区二区三区在线观看 | 九九热精品视频 | 91麻豆精品国产91久久久资源速度 | 国产精品视频网 | 韩日一区二区 | 在线成人 | 欧美视频免费在线 | 欧美日产国产成人免费图片 |