TRY ... CATCH
- Last UpdatedApr 28, 2026
- 1 minute read
TRY ... CATCH を使用すると、プログラムを終了せずに実行したまま、コードのブロックで発生する一部またはすべてのエラーを処理することができます。コードの TRY の部分は try ブロックと呼ばれます。コードの CATCH の部分(catch ブロック)の例外を処理します。
一般的な TRY ... CATCH の形式を以下に示します。
TRY
[try statements] ’ 保護されたセクション
CATCH
[catch statements]
ENDTRY
結果は、
tryStatements
エラーが発生する可能性のあるステートメント。複合ステートメントである場合があります。tryStatement は保護されたセクションです。
catchStatements
関連付けられた Try ブロックで発生するエラーを処理するステートメント。複合ステートメントである場合があります。
Catch ブロック内のステートメントは、Try ブロックからスローされる .NET System.Exception である予約された ERROR 変数を参照することがあります。Catch ブロック内のステートメントは、Try ブロックから例外がスローされた場合にのみ実行します。
TRY ... CATCH は次のように実行します。
-
ランタイム エラー処理が TRY で開始します。エラーになる可能性のあるコードを try ブロックに配置します。
-
ランタイム エラーが発生しなかった場合、スクリプトは通常通り実行します。Catch ブロック ステートメントは無視されます。
-
ランタイム エラーが発生した場合、try ブロックの残りの部分は実行されません。
-
ランタイム エラーが発生した場合、プログラムは直ちに CATCH ステートメントにジャンプし、catch ブロックが実行されます。
最もシンプルな例外処理は、プログラムを停止し、例外メッセージを書き出してプログラムを続行することです。
エラー変数は文字列ではありませんが、System.Exception の .NET オブジェクトです。これは、シンプルな CATCH ステートメントでも例外のタイプを特定できることを意味します。GetType() メソッドを呼び出して例外のタイプを特定し、複数の catch ブロックを実行する場合と同様に目的の操作を実行します。
例:
dim command = new System.Data.SqlClient.SqlCommand;
dim reader as System.Data.SqlClient.SqlDataReader;
command.Connection = new System.Data.SqlClient.SqlConnection;
try
command.Connection.ConnectionString = "Integrated Security=SSPI";
command.CommandText="select * from sys.databases";
command.Connection.Open();
reader = command.ExecuteReader();
while reader.Read()
me.name = reader.GetString(0);
LogMessage(me.name);
endWhile;
catch
LogMessage(error);
endtry;
if reader <> null and not reader.IsClosed then
reader.Close();
ENDIF;
if command.Connection.State == System.Data.ConnectionState.Open then
command.Connection.Close();
ENDIF;
注意: 上記のコード例では、非推奨の System.Data.SqlClient メソッドを使用しています。それではなく、SQL サーバー クエリーに SQLData スクリプト ライブラリを使用してください。