2016-02-10 90 views
1

我目前進入了一些我知道這是可能的,但不知道如何去做。自定義來自try-catch的異常消息

我想在程序中顯示一個定製的錯誤消息,人們可以插入數據,刪除,更新,搜索和其他類似的東西。 可悲的是,我不能只顯示消息喜歡這裏:

try { } 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
} 

所有我需要的是一個數字,描述異常。所以,如果我知道具體的數字,我可以將它與我想要的信息聯繫起來。我嘗試了下面的代碼,但我不知道如何關聯我得到的異常(是否有任何庫或其他?)。

我這樣做是因爲用戶根本不會說英語。

我見過一些知道異常(如被零除)的人可以自定義它的情況。但是,因爲我會有不同的信息,所以我應該以另一種方式來做。

try 
{ 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.HResult.ToString()); //Here I cant get a number, and, 
    }  //in one case, I get the result 2147467259 which should be about 
}   //inserting a data too long in a MySQL table 
+1

創建一個自定義類,該類繼承自Exception,並在其構造函數中將一個數字作爲參數。 –

+0

所以你已經測試過了,當你測試它時,你會得到多個異常?所以你不能縮小哪種異常可能發生? –

+0

那麼,你是否試圖輸出特定於每種類型異常的數字代碼?例如,「錯誤:異常12345」告訴你,你有一個索引越界異常,但在同一個地方的「錯誤:異常67890」告訴你,你有一個數據庫連接錯誤?或者你想輸出一個特定於每個try/catch的錯誤代碼嗎?例如,「錯誤:異常1」告訴你在try/catch塊1中捕獲到異常? – Tophandour

回答

2

兄弟,我會建議你首先要分析異常的原因,然後寫一個自定義消息,你可以做的另一粗糙件事是檢查異常的消息,並異常執行這樣的事情在對象

if(ex.Message.Contains("PRIMARY_KEY")) 
{ 
    MessageBox.Show("Primary Key Violation, You Cannot Add Duplicate Records!"); 
} 
+0

對不起。我沒有這個選項「包含」。 – ArthurMFB

+0

我編輯了我的答案,,現在你可以看到** Contains()**方法 – CodeIt

+0

。我現在無法編譯,但是你是否知道是否有可能執行如下操作:if(ex.Message.Contains。(「Data too long」))。然後blablabla – ArthurMFB

相關問題