異常處理詳解(C )

2021-08-26 20:33:52 字數 2059 閱讀 8954

什麼是異常處理?

異常是指程式在執行過程中出現的以外情況。異常通常會使程式的正常流程被打斷。例如,算數運算中被除數為0、陣列下標越界、開啟檔案是檔案不存在等等。

一般情況下,程式中需要對異常進行處理,通過對異常情況的處理,可以發現產生異常的原因,並進行必要的異常處理,從而值程式的執行流程繼續走下去。

為什麼要用異常處理?

程式中的小錯誤不能影響整個系統的執行。例如,上述分數型別設計中,當分母為0時,就退出執行。這對乙個簡單的程式來說,一般沒有太大的問題,但對乙個大型應用軟體來說,這是不能接受的。因為乙個大型軟體通常不可能等測試排除了所有錯誤後才投入使用。

什麼時候會出現異常?

1. 使用者輸入錯誤。例如:程式要求使用者輸入乙個整數,而使用者卻輸入乙個字串。

2. 裝置故障。例如:列印時發現印表機沒有連線好。

3. 物理限制。例如:硬碟已存滿;記憶體空間已用完。

4. **錯誤。例如:陣列下標越界;從乙個空的堆疊中去元素。

try:可能導致異常的操作通過 try 關鍵字來執行。後跟乙個或多個 catch 塊。

catch:程式通過異常處理程式捕獲異常。catch 關鍵字表示異常的捕獲。

finally:即使引發了異常,finally 塊中的**也會執行,從而使程式可以釋放資源。例如,如果您開啟乙個檔案,不管是否出現異常檔案都要被關閉。

throw:當問題出現時,程式丟擲乙個異常。使用 throw 關鍵字來完成。

c# 中的異常類

下表列出了一些派生自 sytem.systemexception 類的預定義的異常類。

下表列出了一些派生自 sytem.systemexception 類的預定義的異常類。

異常類描述

system.io.ioexception

處理當方法指向超出範圍的陣列索引時生成的錯誤。

system.indexoutofrangeexception

處理當方法指向超出範圍的陣列索引時生成的錯誤。

system.arraytypemismatchexception

處理當陣列型別不匹配時生成的錯誤。

system.nullreferenceexception

處理當依從乙個空物件時生成的錯誤。

system.dividebyzeroexception

處理當除以零時生成的錯誤。

system.invalidcastexception

處理在型別轉換期間生成的錯誤。

system.outofmemoryexception

處理空閒記憶體不足生成的錯誤。

system.stackoverflowexception

處理棧溢位生成的錯誤。

c#異常處理

c# 以 try 和 catch 塊的形式提供了一種結構化的異常處理方案。使用這些塊,把核心程式語句與錯誤處理語句分離開。

這些錯誤處理塊是使用 try、catch 和 finally 關鍵字實現的。下面是乙個當除以零時丟擲異常的例項:

using system;

namespace

public

void division(int num1, int num2)

catch (dividebyzeroexception e)

", e);

}finally

", result);}}

static

void main(string args)

}}

當上面的**被編譯和執行時,它會產生下列結果:

exception caught: system.dividebyzeroexception: 嘗試除以零。

在 異常處理.divnumbers.division(int32 num1, int32 num2) 位置 f:\vs

\新建程式\總結\異常處理\program.cs:行號 20

result: 0

C 異常處理詳解

捕獲異常 捕獲異常的語法為 trycatch 異常型別 try 和 catch 都是c 中的關鍵字,後跟語句塊,不能省略 try 中包含可能會丟擲異常的語句,一旦有異常丟擲就會 獲。從 try 的意思可以看出,它只是 嘗試 捕獲異常,如果沒有異常丟擲,那就什麼也不捕獲。catch 用來處理 try ...

C 異常處理詳解

異常介紹 www.cppcns.com1 system.exception類 message屬性 發生異常的原因和異常的內容 souce屬性 丟擲異常程式集的名稱 stacktrace屬性 發生異常的方法呼叫情況 innerexception屬性 次異常中包含的異常 2 try catch fina...

C 之異常處理詳解

程式中的錯誤分為編譯時的錯誤和執行時的錯誤。編譯時的錯誤主要是語法錯誤,比如 句尾沒有加分號,括號不匹配,關鍵字錯誤等,這類錯誤比較容易修改,因為編譯系統會指出錯誤在第幾行,什麼錯誤。而執行時的錯誤則不容易修改,因為其中的錯誤是不可預料的,或者可以預料但無法避免的,比如記憶體空間不夠,或者在呼叫函式...