2014-06-17 99 views
0

所以在我的vb.net應用程序中,我有很多try和catch塊用於錯誤處理,特別是當我的應用程序與db對話時。重複的錯誤處理

我正在通過一系列的if/elseif的語句的運行,看是否

ex.tostring.contains("Unable to connect to any of the specified MySQL hosts") 

和各個位這樣的。

當時,我寫出來並複製並粘貼到每個catch中,但我知道會有一種更有效的方法來執行此操作,代碼只在一個地方並在需要時調用。

我試圖將它作爲一個函數來實現,但我無法將信息傳遞給該函數。

所以我想我會問,看看你們如何去做這件事?

+0

又有哪些呢你想要做什麼如果異常包含該文本? –

+0

我正在嘗試重試功能,以便如果錯誤是分貝錯誤,那麼我可以檢查他們是否有互聯網連接,如果沒有,切換到離線模式。 :) – John

回答

0

您不需要multipe try ... catch語句。一個就足夠了。 如果我正確地理解了你,你想要打印或顯示出現在Try塊內的錯誤。

Public Sub main() 
    Try 
     'Do something 
    Catch ex As Exception 
    End Try 
    Try 
     'Do something else 
    Catch ex As Exception 
    End Try 

    If ex.tostring.contains("something") than 
End Sub 

相反,你可以做這樣的事情:

Public Sub main() 
    Try 
     'Do all your code here. 
    Catch ex As Exception 
     MsgBox(ex.ToString) 
    End Try 
End Sub 

在這一部分中,編譯器將程序自動打印錯誤的程序出錯。

+1

如果您想要捕獲可以拋出的不同類型的異常,Try塊可以有多個'Catch'語句。 'Catch ex Exception'是捕獲任何異常的通用方法,但是如果您想要基於拋出的異常執行不同的操作,則可以在通用之前放入另一個「Catch」語句。這種類型的方法被用於在實際上對與您的應用程序相關的事件採取行動時可能發生的不重要的例外情況。 –

0

您可以根據拋出的異常類型執行某些操作。檢查文本,如果不推薦使用,因爲這可能與.NET或新版本mysqldata

改變嘗試是這樣的:

Try 
    ' 
    ' Programming lines of code 
    ' 
Catch exError As MySqlException 
    ' an error occurred with MySql 
Catch e As Exception 
    ' a General error occurred 
Finally 
    ' Cleanup custom and unmanaged resources if necessary 
End Try 

看一看在MySQL Documentation他們建議