ASP.NET(C#)中的try catch異常處理機制

來源:互聯網
上載者:User

標籤:try catch   產生器   exce   art   blog   api   故障   對象   平台   

在開發一個Umbraco平台系統的過程中,遇到了問題。 寫的代碼如下

fileUrl = MediaHelper.GetMediaUrl(Convert.ToInt32(publishedContent.GetProperty("mediaPdf").DataValue.ToString()));

這個是在Umbraco後台建立了一個pdfInfo的DocumentType, 它裡面有個屬性是mediaPicker, 從media檔案夾中選取pdf檔案。這個屬性名稱是mediaPdf, 這裡就是擷取mediaPdf的屬性值(節點ID), 轉化為Int32類型,然後來擷取這個pdf在media folder檔案夾

下的url. 

現在有個問題是,content Editor在Umbraco後台,增加一個pdfInfo類型的DocumentType時,忘記添加mediaPdf屬性了,也就是說沒有從Media檔案夾中選擇檔案,那麼這個屬性值就是空值,轉化為Int32類型Convert.ToInt32就會報錯

如何解決呢 ? 寫如下語句

  var fileUrl = "";                try                {                    fileUrl = MediaHelper.GetMediaUrl(Convert.ToInt32(publishedContent.GetProperty("mediaPdf").DataValue.ToString()));                }                catch (Exception e)                {                }

這裡就是使用了Try Catch語句塊

catch語句中使用如下方式:

catch( Exception  e )

{ }

將在任何情況下,編譯都能通過

以下是對Try Catch語句塊的理解

通常我們在編程時,將可能引發異常的代碼節放在 Try 塊中,而將處理異常的代碼放在 Catch 塊中。Catch 塊是一系列以關鍵字 catch 開頭的語句,語句後跟異常類型和要執行的操作。

 

下面詳細講解一下 try catch 的用法:

轉載自 http://blog.csdn.net/studyofnet/article/details/13083999 

異常的概述:

 

1、在應用程式遇到異常情況(如被零除情況或記憶體不足警告)時,就會產生異常。

2、在可能引發異常的語句周圍使用 try 塊。

3、try 塊中發生異常後,控制流程會立即跳轉到關聯的例外處理常式(如果存在)。

4、如果給定異常沒有例外處理常式,則程式將停止執行,並顯示一條錯誤訊息。

5、如果 catch 塊定義了一個異常變數,則可以使用它來擷取有關所發生異常的類型的更多資訊。

6、可能導致異常的操作通過 try 關鍵字來執行。

7、例外處理常式是在異常發生時執行的代碼塊。在 C# 中,catch 關鍵字用於定義例外處理常式。

8、程式可以使用 throw 關鍵字顯式地引發異常。

9、異常對象包含有關錯誤的詳細資料,比如呼叫堆疊的狀態以及有關錯誤的文本說明。

10、即使引發了異常,finally 塊中的代碼也會執行,從而使程式可以釋放資源。

 

異常通用用法:
try  {   //程式碼塊;   //儘力執行該代碼塊,並捕捉可能發生的異常  }  catch(Exception e)   {  //異常處理代碼塊;若異常不被處理,程式將會中止。     //一個try,可對應多個catch,異常處理機制會搜尋參數與異常類型相符的,進入那個catch從句。必須正確排列捕獲異常的catch子句,範圍小的Exception放在前面的catch。即如果Exception之間存在繼承關係,就應把子類的Exception放在前面的catch子句中。     //若當前處理不了該異常,那麼把它再拋出。也可在此再拋出異常,實現對錯誤的封裝;     //沒有運算式的throw(throw;),將會再次拋出被catch捕捉到的異常。     //使用不帶參數的catch子句,則可以捕獲任意類型的異常  }  finally  {  //存在於異常處理的標準事件流之外。     //用來清理資源或還原相關設定資訊等其他動作     //是否發生異常,均要執行的代碼塊;  }  
異常處理使用建議:

 

 

1、不要返回錯誤碼。異常是報告架構中的錯誤的主要手段。

2、儘可能不對正常控制流程使用異常。除了系統故障及可能導致爭用狀態的操作之外,架構設計人員還應設計一些 API 以便使用者可以編寫不引發異常的代碼。例如,可以提供一種在調用成員之前檢查前提條件的方法,以便使用者可以編寫不引發異常的代碼。

3、不要包含可以根據某一選項引發或不引發異常的公用成員。

4、不要包含將異常作為傳回值或輸出參數返回的公用成員。

5、考慮使用異常產生器方法。從不同的位置引發同一異常會經常發生。為了避免代碼膨脹,請使用協助器方法建立異常並初始化其屬性。

6、避免從 finally 塊中顯式引發異常。可以接受因調用引發異常的方法而隱式引發的異常。

ASP.NET(C#)中的try catch異常處理機制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.