次の方法で共有


方法: I/O Try...Catch ブロックを実装する (Visual Basic)

ExceptionIOException、および IOException から派生したすべての例外を処理する、Try...Catch ブロックを実装するコード例を次に示します。

使用例

この例では、最も固有な例外から一般的な例外の順に例外を配置します。各々の例外は順にテストされます。

このコードの例は、IntelliSense コード スニペットとしても利用できます。 コード スニペット ピッカーでは、コード例は [ファイル システム - ドライブ、フォルダー、およびファイルの処理] にあります。 詳細については、「方法 : 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 ブロックは、すべての例外をキャッチして再スローするように設計されています。 これは、必ずしもプロジェクトに最適な方法でない可能性もあります。 例外処理のオプションの詳細については、「IntelliSense コード スニペットの最適な使用方法」を参照してください。

ユーザーが有効なファイル名のみを選択できるように制限されている、OpenFileDialog コンポーネント (Windows フォーム) コンポーネント コントロールおよび SaveFileDialog コンポーネント (Windows フォーム) コンポーネント コントロールなどの Windows フォーム コントロールを使用して、例外の可能性を減らすことができます。 FileInfo.Exists プロパティによって、ファイルを開く前にファイルが存在するかどうかをチェックできます。 しかし、これらのコントロールやクラスの使用は安全な方法ではありません。 ユーザーがファイルを選択してから、コードが実行されるまでの間に、ファイル システムが変更される可能性があります。 したがって、ファイルの操作中は、ほとんど常時例外処理が必要になります。

セキュリティ

多くのファイルに関するタスクでは、アセンブリに対して FileIOPermission クラスで特権レベルが許可されている必要があります。 部分的に信頼されているコンテキストでプロセスを実行している場合は、権限不足のため例外がスローされることがあります。 詳細については、「コード アクセス セキュリティの基礎」を参照してください。 また、ユーザーがファイルに対してアクセスしなければならない場合は、権限が必要となります。 詳細については、「アクセス制御リスト (ACL: Access Control List) 技術の概要」を参照してください。

ファイル名の拡張子に基づいてファイルの内容を判断しないでください。 たとえば、Form1.vb というファイルは Visual Basic のソース ファイルではない可能性もあります。

参照

処理手順

方法 : Visual Basic で Catch ブロックを使用してエラーをフィルター処理する

方法: 例外の内部例外をチェックする (Visual Basic)

参照

Try...Catch...Finally ステートメント (Visual Basic)

概念

IntelliSense コード スニペットの最適な使用方法

Visual Basic の構造化例外処理の概要

構造化例外処理と非構造化例外処理に適した状況 (Visual Basic)

その他の技術情報

例外処理のタスク (Visual Basic)