方法 : Try ブロックと Catch ブロックを使用して例外をキャッチする

例外をスローする可能性のあるコード セクションを try ブロックに配置し、例外を処理するコードを catch ブロックに配置します。 catch ブロックとは、catch キーワード、例外の種類、実行アクションの順で記述されたステートメントの集まりです。

メモメモ

どのコード行でも例外が発生する可能性があります。特に、共通言語ランタイム自体からスローされる例外 (OutOfMemoryExceptionStackOverflowException など) が発生する可能性があります。ほとんどのアプリケーションでは、このような例外を処理する必要はありませんが、他のユーザーが使用するライブラリを作成するときにはこれらの例外が発生する可能性について注意する必要があります。try ブロックのコードを設定する必要がある状況に関する提案事項については、「例外処理の実施」を参照してください。

try ブロックと catch ブロックを使用して例外をキャッチするコード例を次に示します。 Main メソッドには、StreamReader ステートメントのある try ブロックが含まれています。このステートメントは、data.txt というデータ ファイルを開き、このファイルの文字列を書き込みます。 try ブロックの後に、try ブロックで発生する例外をキャッチする catch ブロックが続きます。

使用例

Imports System
Imports System.IO

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())
        sr.Close()
        Catch e As Exception
            Console.WriteLine("An error occurred: '{0}'", e)
        End Try
    End Sub
End Class
using System;
using System.IO;

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());
        sr.Close();
        }
        catch (Exception e)
        {
            Console.WriteLine("An error occurred: '{0}'", e);
        }
    }
}
using namespace System;
using namespace System::IO;

public ref 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());
        sr->Close();
        }
        catch (Exception^ e)
        {
            Console::WriteLine("An error occurred: '{0}'", e);
        }
    }
};

int main()
{
    ProcessFile::Main();
}

上記のコード例には、発生する例外をすべてキャッチする基本的な catch ステートメントが記述されています。 一般に、基本的な catch ステートメントを使用する代わりに、特定の種類の例外をキャッチするコードを記述すると、プログラミングの点から便利です。 特定の例外のキャッチの詳細については、「catch ブロックでの特定の例外の使用」を参照してください。

参照

処理手順

方法 : catch ブロックで特定の例外を使用する

方法 : 例外を明示的にスローする

方法 : ユーザー定義の例外を作成する

方法 : finally ブロックを使用する

その他の技術情報

例外処理の基本事項