4.11. try-catch-finally 制御フローの使用
管理 CLI は簡単な try-catch-finally
制御フローを提供します。これは、try
、catch
、および finally
ブロックに対応する 3 つの操作およびコマンドのセットで設定されます。catch
および finally
ブロックは任意ですが、最低でも 1 つが存在するべきで、1 つの catch ブロックのみを指定できます。
制御フローは try
バッチの実行で始まります。try
バッチが正常に完了すると、catch
バッチはスキップされ、finally
バッチが実行されます。java.io.IOException
などが原因で try
バッチが失敗すると、try-catch-finally
制御フローは即座に終了します。利用できる場合は catch
バッチが実行されます。finally
バッチは、try
および catch
バッチの実行に成功または失敗に関わらず、制御フロードサイドに実行されます。
try-catch-finally 制御フローを定義するコマンドは 4 つあります。
-
try
コマンドはtry
バッチを開始します。try
バッチは、catch
またはfinally
コマンドの 1 つが実行されるまで継続されます。 -
catch
コマンドはtry
バッチの最後を示します。try
バッチは引き止められ、catch
バッチが開始されます。 -
finally
コマンドはcatch
バッチまたはtry
バッチの最後を示し、finally
バッチを開始します。 -
end-try
はcatch
またはfinally
バッチを終了し、try-catch-finally 制御フローを実行するコマンドです。
以下の例はデータソースを作成または再作成し、有効化します。
try /subsystem=datasources/data-source=myds:add(connection-url=CONNECTION_URL,jndi-name=java:/myds,driver-name=h2) catch /subsystem=datasources/data-source=myds:remove /subsystem=datasources/data-source=myds:add(connection-url=CONNECTION_URL,jndi-name=java:/myds,driver-name=h2) finally /subsystem=datasources/data-source=myds:enable end-try