2012-05-17 242 views
3

我有一個懷疑TryCatch塊。 如果我在Try塊中遇到錯誤,那麼它將按照規則重定向到Catch塊。因此,我可以將我的標籤可見= true設置爲catch catch嘗試catch塊顯示錯誤消息

lblError.visible=true;

它是正確的,因爲每個編碼標準?我是新開發的。

回答

2

例如,您可以在catch塊中將輸入元素的可見性設置爲false,並顯示錯誤面板。

+0

感謝所有我得到了我的答案。 –

+1

不要忘記接受答案。 –

0

沒錯,那有什麼不對?也許你對visibling和設置catch塊中的lblError感到不舒服,因爲try..catch可能出現在你的代碼中的很多地方,如果是這樣,你可以將這兩行包含在函數中並從每個catch塊中調用它。

您還可以從catch塊中拋出異常,並在會話級別或應用程序級別的一個位置處理它們,並重定向到一個默認錯誤頁面,您可以在其中獲得最後發生的錯誤並按照它顯示用戶友好的消息。

您也可以在web.config中啓用CustomErrors部分,並在會話中發生的任何錯誤中重定向到一個特定頁面。

try 
{ 
    //statements; 
} 
catch (Exception ex) 
{ 
    ShowError(ex); 
} 

void ShowError(Exception ex) 
{ 
    //Log or Email error first 
    LogOrEmailError(ex); 

    // you can write user friendly message based on the exception provided or a generic error message. 
    lblError.Visible = true; 
    lblError.Text = GetUserFriendlyErrorMessage(ex); // or throw; if you are planing to handle error in global.ascx or through CustomErrors in web.config 
} 
+0

你很可能不想向用戶顯示實際的錯誤信息。它很可能會超過他們的頭。創建你自己的友好版本將是首選。 –

+0

@Josh真,人們不會試圖向用戶顯示錯誤信息! – Writwick

+0

是真的,我在代碼中爲解釋它寫了註釋。 –

0

是的非常。您可以在catch塊中編寫普通編碼行。

+0

是的,多數民衆贊成我想聽...實際上,我很困惑,寫在代碼捕捉或不。 –

+0

@FrankJames:事實上,我們使用這種技術(在catch塊中編寫)來調用一個記錄器方法/函數,當有異常拋出時它會在數據庫中插入一些值。這樣我們就可以跟蹤錯誤和異常情況。 –

0

捕獲塊使開發人員能夠恢復由try塊中拋出的錯誤所造成的損害。

因此,如果錯誤出現在try塊中,您可以寫下任何應該運行的代碼。即錯誤日誌記錄

0

是的,您可以在catch塊內寫入任何代碼,即使在方法中使用return也是如此。一刻,您必須使用finaly{}塊來釋放在拋出異常的方法中使用的任何資源(例如,您使用數據庫連接)。