HOW TO:在 Visual Basic 中攔截例外狀況
更新:2007 年 11 月
這個範例顯示如何使用 Try 和 Catch 區塊攔截例外狀況。
範例
這個範例顯示如何使用 Try…Catch 區塊攔截 OverflowException。
這個程式碼範例也有 IntelliSense 程式碼片段可供參考。在程式碼片段選擇器中,這個程式碼片段位於 [Visual Basic 語言] 中。如需詳細資訊,請參閱 HOW TO:在您的程式碼中插入程式碼片段 (Visual Basic)。
Dim Top As Double = 5
Dim Bottom As Double = 0
Dim Result As Integer
Try
Result = CType(Top / Bottom, Integer)
Catch Exc As System.OverflowException
MsgBox("Attempt to divide by zero resulted in overflow")
End Try
這項範例需要:
- 對 System 命名空間的參考。
下列程式碼範例會實作 Try...Catch 區塊,以處理 Exception、IOException,以及所有從 IOException 衍生的例外狀況。
Try
' Add code for your I/O task here.
Catch dirNotFound As System.IO.DirectoryNotFoundException
Throw dirNotFound
Catch fileNotFound As System.IO.FileNotFoundException
Throw fileNotFound
Catch pathTooLong As System.IO.PathTooLongException
Throw pathTooLong
Catch ioEx As System.IO.IOException
Throw ioEx
Catch security As System.Security.SecurityException
Throw security
Catch ex As Exception
Throw ex
Finally
' Dispose of any resources you used or opened in the Try block.
End Try
將想要執行的程式碼加入至 Try 區塊中。
穩固程式設計
使用此程式碼區塊做為在 Try...Catch 陳述式 (Statement) 中包裝資料作業的起點。您可以使用這個 Try...Catch 區塊攔截和重新擲回所有的例外狀況。不過,這並不一定適用於您的專案。如需例外處理 (Exception Handling) 選項的討論,請參閱使用 IntelliSense 程式碼片段的最佳作法。
您可以使用 Windows Form 控制項,例如 OpenFileDialog 元件 (Windows Form) 元件和 SaveFileDialog 元件 (Windows Form) 元件控制項,將使用者選擇限制為有效的檔案名稱,減少發生例外狀況的可能性。FileInfo.Exists 屬性會在您嘗試開啟檔案前,先檢查檔案是否存在。不過,使用這些控制項和類別並不是絕對可靠的。因為在使用者選擇檔案到程式碼執行的這段時間,檔案系統有可能變更。因此在處理檔案操作時,幾乎都需要例外處理。
安全性
在處理許多檔案工作時,組件都會需要 FileIOPermission 類別授與權限等級。如果您是在部分信任的環境下執行動作,程式碼可能會因權限不足而擲回例外狀況。如需詳細資訊,請參閱程式碼存取安全性的基本概念。如果檔案存在,使用者也需要存取檔案的權限。如需詳細資訊,請參閱存取控制清單 (ACLs)。
請不要根據副檔名來判斷檔案內容。例如,檔案 Form1.vb 可能不是 Visual Basic 原始程式檔。
請參閱
工作
HOW TO:在 Visual Basic 中使用 Try…Catch 區塊測試程式碼
HOW TO:在 Visual Basic 中使用 Try…Finally 區塊清除資源
HOW TO:在 Visual Basic 中篩選 Catch 區塊中的錯誤