方法 : Try ブロックと Catch ブロックを使用して例外をキャッチする
更新 : 2007 年 11 月
例外をスローする可能性のあるコード セクションを try ブロックに配置し、例外を処理するコードを catch ブロックに配置します。catch ブロックとは、catch キーワード、例外の種類、実行アクションの順で記述されたステートメントの集まりです。
メモ : |
---|
どのコード行でも例外が発生する可能性があります。特に、共通言語ランタイム自体からスローされる例外 (OutOfMemoryException や StackOverflowException など) が発生する可能性があります。ほとんどのアプリケーションでは、このような例外を処理する必要はありませんが、他のユーザーが使用するライブラリを作成するときにはこれらの例外が発生する可能性について注意する必要があります。try ブロックのコードを設定する必要がある状況に関する提案事項については、「例外処理の実施」を参照してください。 |
try ブロックと catch ブロックを使用して例外をキャッチするコード例を次に示します。Main メソッドには、StreamReader ステートメントのある try ブロックが含まれています。このステートメントは、data.txt というデータ ファイルを開き、このファイルの文字列を書き込みます。try ブロックの後に、try ブロックで発生する例外をキャッチする catch ブロックが続きます。
使用例
Option Explicit
Option Strict
Imports System
Imports System.IO
Imports System.Security.Permissions
<assembly: FileIOPermissionAttribute(SecurityAction.RequestMinimum, All := "c:\data.txt")>
Public Class ProcessFile
Public Shared Sub Main()
Try
Dim sr As StreamReader = File.OpenText("data.txt")
Console.WriteLine("The first line of this file is {0}", sr.ReadLine())
Catch e As Exception
Console.WriteLine("An error occurred: '{0}'", e)
End Try
End Sub
End Class
using System;
using System.IO;
using System.Security.Permissions;
// Security permission request.
[assembly:FileIOPermissionAttribute(SecurityAction.RequestMinimum, All = @"c:\data.txt")]
public class ProcessFile {
public static void Main() {
try {
StreamReader sr = File.OpenText("data.txt");
Console.WriteLine("The first line of this file is {0}", sr.ReadLine());
}
catch(Exception e) {
Console.WriteLine("An error occurred: '{0}'", e);
}
}
}
上記のコード例には、発生する例外をすべてキャッチする基本的な catch ステートメントが記述されています。一般に、基本的な catch ステートメントを使用する代わりに、特定の種類の例外をキャッチするコードを記述すると、プログラミングの点から便利です。特定の例外のキャッチの詳細については、「catch ブロックでの特定の例外の使用」を参照してください。