C try catch finally 異常處理

2021-10-11 18:36:55 字數 3315 閱讀 2753

異常類說明

system.outofmemoryexception

用 new 分配記憶體失敗

system.stackoverflowexception

遞迴過多、過深

system.nullreferenceexception

物件為空

syetem.indexoutofrangeexception

陣列越界

system.arithmaticexception

算術操作異常的基類

system.dividebyzeroexception

除零錯誤

在 c# 語言中異常與異常處理語句包括三種形式,即 try catch、try finally、try catch finally。

在上述三種異常處理的形式中所用到關鍵字其含義如下:

下面我們將分別為大家講解這三種形式的應用。

在 try 語句中放置可能出現異常的語句,而在 catch 語句中放置異常時處理異常的語句,通常在 catch 語句中輸出異常資訊或者傳送郵件給開發人員等。

下面通過例項來演示 try catch 的應用。

另外,在處理異常時,catch 語句是允許多次使用的,相當於多分支的 if 語句,僅能執行其中乙個分支。

【例項 1】在文字框中輸入乙個整數,並判斷其是否大於 100。

根據題目要求,如果在文字框中輸入的是乙個字串或者浮點數,就會出現型別轉換錯誤,如下圖所示。

如果使用異常處理的語句來處理資料型別轉換,則不會岀現上圖中的提示,而是出現 catch 語句中彈出的訊息框,實現的**如下。

public partial class trycatchform : form

//「確認」按鈕單擊事件

private void button1_click(object sender, eventargs e)

catch (exception ex)}}

執行該窗體,輸入字串「abc」,並單擊「確定」按鈕,效果如下圖所示。

從執行效果可以看出,使用異常處理後不會再出現上面所示的異常提示,而是彈出 catch 子句中的訊息框。

【例項 2】使用多個 catch 語句對程式做異常處理。

從控制台輸入 5 個數存入整數陣列中,首先判斷輸入的值是否為數值,再判斷陣列元素是否越界。

根據題目要求,建立控制台應用程式完成該例項,具體的**如下。

class program

for(int i = 0; i < a.length; i++)

}catch(formatexception f)

catch(overflowexception o)

catch(indexoutofrangeexception r)}}

執行該程式,效果如下圖所示。

從執行效果可以看出,捕獲該程式產生的異常類是 formatexception。

這樣,在出現不同的異常時都會有相應的異常類來處理異常,這也是比較推薦的一種程式設計方法。

在 try finally 形式中沒有單獨對出現異常時處理的**,finally 語句是無論 try 中的語句是否正確執行都會執行的語句。

通常在 finally 中編寫的**是關閉流、關閉資料庫連線等操作,以免造成資源的浪費。

下面通過例項來演示 try finally 形式的應用。

【例項 3】驗證 finally 語句的使用。

將例項 1 中的 catch 語句換成 finally 語句,**如下。

public partial class trycatchform : form

//「確認」按鈕單擊事件

private void button1_click(object sender, eventargs e)

finally}}

執行該窗體,單擊「確定」按鈕後效果如下圖所示。

從執行效果可以看出,當文字框中輸入的值是乙個數字字串時也會執行 finally 語句中的內容。

【例項 4】從文字框中輸入當天的天氣情況,並將其寫入檔案中,無論寫入是否成功都將檔案流關閉。

根據題目要求,使用 windows 應用程式完成該例項,介面設計如下圖所示。

單擊「確認」按鈕後,將介面的文字框中的資訊寫入名為 weather.txt 的文字檔案中, **如下。

public partial class tryfinallyform : form

//"確認"按鈕的單擊事件

private void button1_click(object sender, eventargs e)

finally}}

}執行該窗體,並在介面中填入所需的資訊,單擊「確認」按鈕,效果如下圖所示。

try catch finally 形式語句是使用最多的一種異常處理語句。

在出現異常時能提供相應的異常處理,並能在 finally 語句中保證資源的**。

下面通過例項來演示 try catch finally 語句的應用。

【例項 5】使用 try catch finally 形式完成例項 4 的題目要求。

在例項 4 中使用了 try finally 的形式來處理異常,這樣在岀現異常時並不會在程式中給予任何提示。

下面使用 try catch finally 的形式來實現,**如下。

public partial class tryfinallyform : form

//"確認"按鈕的單擊事件

private void button1_click(object sender, eventargs e)

catch(exception ex)

finally}}

}執行該窗體,效果與例項 4 所示的一樣,但是當程式出現錯誤時會彈出 catch 語句中的提示訊息。

mysql 丟擲異常sql mysql 異常處理

該文章內容通過網路搜尋組合,mysql 異常,可以自定義異常,再應用。也可使用系統預設的異常,捕獲應用。一 異常定義 declare condition name condition for condition type condition name引數表示異常的名稱 condition type引...

mysql 多異常 處理 MYSQL效能異常處理

通過information schema.processlist表中的連線資訊生成需要處理掉的mysql連線的語句臨時檔案,然後執行臨時檔案中生成的指令 mysql select concat kill id,from information schema.processlist where use...

spark on yarn 模式在hdp異常處理

其中乙個異常關鍵字 bad substitution 然後在stackoverflow發現相同提問,文中提到是因為沒有制定hdp版本,我才明白spark bin hadoop,編譯的是原生態的hadoop。英文應該都懂,我就不用翻譯了。正常情況遇見問題,不應該直接在網上找答案,診斷流程 從log或者...