標籤: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異常處理機制