來自 Try 區塊的區域變數是個別的區塊,所以無法在 Catch 區塊中使用。如果想在多個區塊中共用一個變數,請在 Try...Catch...Finally 結構外宣告該變數。
Try 區塊包含可能會發生錯誤的程式碼,而 Catch 則包含用於處理任何確實發生錯誤的程式碼。如果在 Try 區塊中發生錯誤,則程式控制權會傳遞至適當的 Catch 陳述式以進行配置。exception 引數是 Exception 類別 (Class) 或衍生自 Exception 類別之類別的執行個體。Exception 類別執行個體會對應至在 Try 區塊中發生的錯誤。這個執行個體會包含錯誤的相關資訊,其中包括錯誤的號碼和訊息。
如果 Catch 陳述式未指定 exception 引數,則會攔截所有類型的系統或應用程式例外狀況。在攔截您要的所有特定例外狀況之後,一定要使用這個變異形式做為 Try...Catch...Finally 結構中的最後一個 Catch 區塊。控制流程永遠無法到達接在不含 exception 引數之 Catch 後面的 Catch 區塊。
在部分信任的情況下,例如裝載在網路共用的應用程式,Try...Catch...Finally 不會攔截在叫用包含呼叫的方法前所發生的安全性例外狀況。放在伺服器共用並從那裡執行時,下列範例會產生錯誤:"System.Security.SecurityException: Request Failed"。如需安全性例外狀況的詳細資訊,請參閱 SecurityException 類別。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Try
Process.Start("http://www.microsoft.com")
Catch ex As Exception
MsgBox("Can't load Web page" & vbCrLf & ex.Message)
End Try
End Sub
在此種部分信任的情況下,您需要將 Process.Start 陳述式 (Statement) 放在個別的 Sub 中。初始呼叫 Sub 將會失敗,這允許在啟動包含 Process.Start 的 Sub,並產生安全性例外狀況之前,Try...Catch 能夠攔截這項錯誤。
注意事項 |
|---|
| 如果 Try 陳述式未包含至少一個 Catch 區塊,它必須包含一個 Finally 區塊。 |