共用方式為


HOW TO:在 Visual Basic 中實作 I/O Try...Catch 區塊

下列程式碼範例會實作 Try...Catch 區塊,以處理 ExceptionIOException,以及所有從 IOException 衍生的例外狀況。

範例

此範例會從最特定的情況到最不特定的情況,且會依序測試每個例外狀況。

這個程式碼範例也可做為 IntelliSense 程式碼片段。 在程式碼片段選擇器中,它是位於 [檔案系統 - 處理磁碟、資料夾和檔案] 中。 如需詳細資訊,請參閱 HOW TO:插入 IntelliSense 程式碼片段

Try
    ' Add code for your I/O task here. 
Catch dirNotFound As System.IO.DirectoryNotFoundException
    ' Code to handle DirectoryNotFoundException.
Catch fileNotFound As System.IO.FileNotFoundException
    ' Code to handle FileNotFoundException.
Catch pathTooLong As System.IO.PathTooLongException
    ' Code to handle PathTooLongException.
Catch ioEx As System.IO.IOException
    ' Code to handle IOException.
Catch security As System.Security.SecurityException
    ' Code to handle SecurityException.
Catch ex As Exception
    ' Rethrow exception if anything else has occurred.
    Throw ex
Finally
    ' Dispose of any resources you used or opened in the Try block. 
End Try

編譯程式碼

將想要執行的程式碼加入至 Try 區塊中。

穩固程式設計

使用此程式碼區塊做為在 Try...Catch 陳述式中包裝資料作業的起點。 您可以使用這個 Try...Catch 區塊攔截和重新擲回所有的例外狀況。 不過,這並不一定適用於您的專案。 如需例外處理 (Exception Handling) 選項的討論,請參閱使用 IntelliSense 程式碼片段的最佳作法

您可以使用 Windows Form 控制項,例如 OpenFileDialog 元件 (Windows Form) 元件和 SaveFileDialog 元件 (Windows Form) 元件控制項,將使用者選擇限制為有效的檔案名稱,減少發生例外狀況的可能性。 FileInfo.Exists 屬性會在您嘗試開啟檔案前,先檢查檔案是否存在。 不過,使用這些控制項和類別並不是絕對可靠的。 因為在使用者選擇檔案到程式碼執行的這段時間,檔案系統有可能變更。 因此在處理檔案操作時,幾乎都需要例外處理。

安全性

在處理許多檔案工作時,組件都會需要 FileIOPermission 類別授與權限等級。 如果您是在部分信任的環境下執行動作,程式碼可能會因權限不足而擲回例外狀況。 如需詳細資訊,請參閱程式碼存取安全性的基本概念。 如果檔案存在,使用者也需要存取檔案的權限。 如需詳細資訊,請參閱 ACL 技術概觀

請勿根據副檔名判斷檔案內容。 例如,檔案 Form1.vb 可能不是 Visual Basic 原始程式檔。

請參閱

工作

HOW TO:在 Visual Basic 中篩選 Catch 區塊中的錯誤

HOW TO:檢查例外狀況的內部例外狀況 (Visual Basic)

參考

Try...Catch...Finally 陳述式 (Visual Basic)

概念

使用 IntelliSense 程式碼片段的最佳作法

Visual Basic 的結構化例外處理概觀

選擇何時使用結構化和非結構化例外處理 (Visual Basic)

其他資源

例外處理工作 (Visual Basic)