錯誤和異常概述

2021-10-02 00:25:19 字數 1368 閱讀 2861

簡介

錯誤的出現並不總是編寫應用程式的人的原因,有時應用程式會因為應用程式的終端使用者引發的動作或執行**的環境而發生的錯誤。無論如何,我們都應**應用程式**現的錯誤,並相應地進行編碼。

.net framework改進了處理錯誤的方式。c#處理錯誤的機制可以為每種錯誤提供自定義處理方式,並把識別錯誤的**與處理錯誤的**分離開來。

無論編碼技術有多好,程式都必須能處理可能出現的任何錯誤。例如,在一些複雜的**處理過程中,**沒有讀取檔案的許可,或者在傳送網路請求時,網路可能會中斷。在這種異常情況下,方法只返回相應的錯誤**通常是不夠的——可能方法呼叫巢狀了15級或者20級,此時,程式需要跳過所有的15或20級方法代用,才能完全退出任務,並採取相應的應對措施。c#語言提供了處理這種情形的最佳工具,稱為異常處理機制。

本章介紹了在多種不同的場景中捕獲或丟擲異常的 方式。討論不同命名空間中定義的異常型別及其層次結構,並學習如何建立自定義異常型別。還將學到捕獲異常的不同方式,例如,捕獲特定型別的異常或者捕獲基類的異常。本章還會介紹如何處理巢狀的try塊,以及如何以這種方式捕獲異常。對於無論如何都要呼叫的**——即使發生了異常或者**帶錯執行,可以使用本章介紹的try/finally塊。

異常類

在c#中,當出現某個特殊的異常錯誤條件時,就會建立(或丟擲)乙個異常物件。這個物件包含有助於跟蹤問題的資訊。我們而可以建立自己的異常類,但.net提供了許多預定義的異常類,多到這裡不可能提供詳盡的列表。

ioexception類及其派生類在system.io命名空間中。system.io命名空間處理檔案資料的讀寫。compositionexception及其派生類在system.componentodel.composition命名空間中。該命名空間處理部件和元件的動態載入。一般情況下,異常沒有特定的命名空間,異常類應放在生成異常的類所在的命名空間中,因此與io相關的異常就在system.io命名空間中。在許多基類命名空間中都有異常類。

對於.net類,一般的異常類system.exception派生自system.object,通常不在**中丟擲system.exception泛型物件,因為它們無法確定錯誤情況的本質。

在該層次結構中有兩個重要的類,它們派生自system.exception類:

其他可能用到的異常類包括:

異常類的層次結構並不多見,因為其中的大多數類並沒有給它們的基類新增任何功能。但是在處理異常時,新增繼承類的一般原因是更準確地指定錯誤條件,所以不需要重寫方法或新增新方法(儘管常常要新增額外的屬性,以包含有關錯誤情況的額外資訊)。例如,當傳遞了不正確的引數值時,可給方法呼叫使用argumentexception基類,argumentnullexception類派生於argumentexception異常類,它專門用於處理所傳遞的引數值是null的情況。

錯誤和異常

錯誤和異常 try 語句體except 異常型別 處理語句 except 異常型別 處理語句 或 try 語句體except 異常型別1,異常型別2 處理語句 except exception 所有異常 except 異常型別 as 名稱 print as else 沒有異常才會執行 最終要執行的內...

錯誤和異常

try except語句的語法格式為 try 可能會產生異常的 except 異常類物件1 當前except子句處理異常的 except 異常類物件2 當前except子句處理異常的 當except後面的異常類與出現的異常相對應時,就會執行對應except下面的 如果程式出現的異常不在except後...

錯誤和異常

錯誤和異常 python中兩種錯誤 語法錯誤和異常。python assert 斷言 用於判斷乙個表示式,在表示式條件為false的時候觸發異常。在python中即便語法是正確的,在執行它的時候,也有可能傳送錯誤。執行期檢測到的錯誤被稱為異常。異常以不同的型別出現,這些型別都作為資訊的一部分列印出來...