使用使用者篩選的例外處理常式
使用者篩選例外狀況處理常式會依據您定義的例外狀況需求,攔截和處理例外狀況。 這些處理常式會搭配 when
關鍵字 (Visual Basic 中的 Catch
和 When
) 使用 catch
陳述式。
當特定例外狀況物件對應至多個錯誤時,這個技術非常有用。 在此情況下,物件通常會有一個屬性,其中包含與錯誤相關聯的特定錯誤碼。 您可以在運算式中使用錯誤碼屬性,只選取您想要在該 catch
子句中處理的特定錯誤。
下列範例說明 catch
/when
陳述式。
try
{
//Try statements.
}
catch (Exception ex) when (ex.Message.Contains("404"))
{
//Catch statements.
}
Try
'Try statements.
Catch When Err = VBErr_ClassLoadException
'Catch statements.
End Try
不會以任何方式限制使用者篩選子句的運算式。 如果在使用者篩選運算式執行期間發生例外狀況,會捨棄該例外狀況,且篩選運算式會被視為必須評估為 false。 在此情況下,通用語言執行平台會繼續搜尋目前例外狀況的處理常式。
結合特定例外狀況和使用者篩選的子句
catch
陳述式可以包含特定例外狀況和使用者篩選的子句。 執行階段會先測試特定例外狀況。 如果特定例外狀況成功,則執行階段會執行使用者篩選。 一般篩選可以包含類別篩選中所宣告之變數的參考。 請注意,無法反轉兩個篩選子句的順序。
下列範例會顯示 catch 陳述式中的特定例外狀況,以及使用 when 關鍵字的使用者篩選子句。
try
{
//Try statements.
}
catch (System.Net.Http.HttpRequestException ex) when (ex.Message.Contains("404"))
{
//Catch statements.
}
Try
'Try statements.
Catch cle As ClassLoadException When cle.IsRecoverable()
'Catch statements.
End Try