什麼是異常處理?
異常是指程式在執行過程中出現的以外情況。異常通常會使程式的正常流程被打斷。例如,算數運算中被除數為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 之異常處理詳解
程式中的錯誤分為編譯時的錯誤和執行時的錯誤。編譯時的錯誤主要是語法錯誤,比如 句尾沒有加分號,括號不匹配,關鍵字錯誤等,這類錯誤比較容易修改,因為編譯系統會指出錯誤在第幾行,什麼錯誤。而執行時的錯誤則不容易修改,因為其中的錯誤是不可預料的,或者可以預料但無法避免的,比如記憶體空間不夠,或者在呼叫函式...