異常的處理 抓拋模型

2021-10-16 22:21:16 字數 1173 閱讀 9635

過程一、「拋」:程式在正常執行的過程中,一旦出現異常,就會在異常**處生成乙個對應異常類的物件。並將此物件丟擲。

一旦丟擲物件以後,其後的**就不再執行。

關於異常物件的產生:①系統自動生成的異常物件

②手動的生成乙個異常物件,並丟擲(throw)

過程二:「抓」:可以理解為異常的處理方式:①try - catch - finally ②throws

trycatch(異常型別1 變數名1)catch(異常型別2 變數名2)catch(異常型別3 變數名3)

......

finally

說明:

1.finally是可選的。

2.使用try將可能出現異常**包裝起來,在執行過程中,一旦出現異常,就會生成乙個對應異常類的物件,根據此物件的型別,去catch中進行匹配

3.一旦try中的異常物件匹配到某乙個catch時,就進入catch中進行異常的處理。一旦處理完成,就跳出當前的try - catch結構(在沒有寫finally的情況)。繼續執行其後的**。

4.catch中的異常型別如果沒有子父類關係,則誰宣告在上,誰宣告在下無所謂。

catch中的異常型別如果滿足子父類關係,則要求子類一定宣告在父類的上面。否則,報錯。

5.常用的異常物件處理的方式:①string getmessage() ②printstacktrace()

6.在try結構中宣告的變數,再出了try結構以後,就不能再被呼叫。

7.try - catch - finally結構可以巢狀

體會1:使用try - catch - finally處理編譯時異常,使得程式在編譯時就不再報錯,但是執行時仍可能報錯。相當於我們使用try - catch - finally將乙個編譯時可能出現的異常,延遲到執行時出現。

體會2:開發中,由於執行時異常比較常見,所以我們通常就不針對執行時異常編寫try - catch - finally了。針對於編譯時異常,我們說一定要考慮異常的處理。

1.finally是可選的

2.finally中宣告的是一定會被執行的**。即使catch中又出現異常了,try中有return語句,catch中有return語句等情況。

3.像資料庫連線、輸入輸出流、網路程式設計socket等資源,jvm是不能自動的**的,我們需要自己手動的進行資源的釋放。此時的資源釋放,就需要宣告在finally中。

拋異常的正確姿勢

每個程式設計師都會拋異常的問題吧!但如果拋的姿勢不對,會很煩吶!就在剛剛,我才知道我拋異常的姿勢很不對。我以前沒有列印異常日誌的習慣,直到我看到別人列印日誌,我也開始列印了。不得不說這樣做確實不錯,程式出問題了,只要看看日誌就能明白個大概是 錯了。但是有個問題是,我只是把導致異常的原因列印出來了,所...

C 拋異常時如何獲取異常時的堆疊呼叫資訊

一般來說,我們使用第三方 的時候,不可避免的會遇到異常資訊。例如呼叫錯誤,庫中會丟擲異常。經常是由於上下文日誌不足,我們只能看到catch處的日誌,而不清楚異常是哪些函式呼叫導致。這導致定位問題比較麻煩,經常要花比較長時間去跟進。去網上找了些資料,我把原文coyp過來,如下 here s an ex...

的異常處理 C 異常處理總結

做開發不僅僅要考慮到業務邏輯更要在寫 時將各種可能考慮周全,但是這又是很難的事情,畢竟開發就是個人的事,而使用者可能上萬甚至百萬級別。這時,程式的穩定性就極為重要,我們不能讓程式因為某一處執行出問題而就直接導致程式或者產生其他更嚴重的後果,比如 做除法時當除數為零時,陣列訪問越界時,容器capaci...