現在はサーバーサイドコマンドでのみ使用できる例外処理コマンドをご存じでしょうか?

正常処理だけ考えると使用しなくても問題はありませんが、アプリに想定しない例外エラーはつきものです。

エラーが発生すると、アプリが途中で止まってしまったり、予期せぬ動作をしたりすることがあります。

このような事態を予測して防ぎ、アプリをより安全に、より安定的に動作させるために、エラー処理は非常に重要な役割を果たします。

今回は、エラー処理の基本である例外処理コマンド(Try-Catch-Finally)について、初心者の方にもわかりやすく解説します!

このページでは以下のことがわかります!

  • 例外処理コマンドの役割
  • 例外処理コマンドの使い方

このページの想定読者

  • サーバーサイドコマンドを使っている方
  • サーバーサイドコマンドをこれから使いってみようと思っている方
  • 出来ることを増やして、わくわくしたい人

このページの情報はV8以降で動作確認済みです。

例外処理コマンド=Try-Catch-Finally

例外処理コマンドの構成

例外処理コマンドは、Try-Catch-Finallyで構成されます。Try-Catch-Finallyは、プログラムでエラーが発生する可能性のある部分を監視し、エラーが発生した場合に適切な処理を行うための構文です。

それぞれの役割は以下の通りです。

  • Tryブロック: エラーが発生する可能性のあるコマンドを設定します。
  • Catchブロック: Tryブロック内でエラーが発生した場合に、そのエラーをキャッチ(受取り)して処理します。
  • Finallyブロック: Tryブロックの処理が正常に終了した場合でも、エラーが発生した場合でも、必ず実行されるコマンドを設定します。リソースの解放処理などに利用されます。

Forguncyでの考え方

Catch内の例外パターン毎の分岐は必要?

例外パターンがエラーコード(ExceptionCode)で把握できるケースの場合は、エラーコードを条件に分岐で処理を分けておいた方がよいです。しかしながら、エラーコードの把握は簡単ではないので、リターンコードにExceptionCodeを、リターンメッセージにExceptionMessageを設定するだけでよいと思います。

サーバーサイドコマンドの呼び出し元で、リターンコードが正常値でなければシステム管理者に画面名、エラーコード、エラーメッセージをメール送信コマンドを使い送信し、アプリでは「システム管理者に連絡してください」とメッセージを表示することで、エラー発生をシステム管理者もアプリ使用者も気づくことができます。


Finally内にはどんなコマンドを設定する?

Finallyブロックは、一般的に処理中のリソースの解放に使われます。Forguncyにおいては、トランザクションコマンドのような、例外発生時に登録処理済みデータを登録前の状態に戻す(一般的にはロールバックといわれる)機能が備わっています。そのため、基本的にはここには何もコマンドを設定しなくてもよいと思います。(あくまでも著者の考えです)

例外処理コマンドの使い方(例)

ここでは、私が普段行っている例外処理コマンドの基本的な使い方を紹介します。

この例は、パラメーターで指定された条件より、SQLクエリ実行コマンドで条件に一致するレコードを取得し、取得した結果を戻り値として返すという処理になります。例外発生時にはリターン(コマンドの終了)コマンドで強制的にFinallyに行かずに処理を終わらせることで、例外時の戻り値と正常時の戻り値をコントロールします。


【パラメータ】
 部署名

【処理概要】

 例外処理
  Try:パラメータで指定された部署名に一致する社員リストを取得

  catch:リターン(コマンドの終了)コマンドで終了

  Finally:コマンドの設定なし

 リターン(コマンドの終了)コマンドで終了


コマンドの設定内容

Try:SQLクエリの実行コマンド(メイン処理)
   テーブルから条件に一致するレコード情報を「変数:取得リスト」に格納(※詳細な説明は省略)

Catch:リターン(コマンドの終了)
    リターンコード=ExceptionCode
    リターンメッセージ=ExceptioMessage
    社員リスト(戻り値)=空白

Finally:設定なし

例外処理の後:リターン(コマンドの終了)
    リターンコード=1(正常終了)
    リターンメッセージ=正常終了(固定値)
    社員リスト(戻り値)=取得リスト(SQLクエリの実行コマンドで取得)

例外処理コマンドを使用しなければ

例外処理コマンドを使用しない場合に例外エラーが発生した場合には、エラーメッセージのみのメッセージダイアログが表示されます。

アプリ使用者にとっては、「変なエラーが出たんだけど」と不安にさせてしまいます。

アプリでは例外エラーが発生した場合の処理も想定して準備しておくと、アプリ使用者を不安にさせないだけでなく、エラー発生時の原因の調査の短縮にも繋がります。

つまり、以下のようなやり取りがなくなります。

ユーザ

エラーが出たのですが。

システム開発者

どのようなエラーですか?

ユーザ

もう消えたので分かりません。

システム開発者

どのような操作をした際にエラーが発生しましたか?

ユーザ

多分、XXXを入力して登録しただけです。

システム開発者

そうですか。。。
エラーログを分析してみます( ;∀;)

まとめ

例外処理コマンド(Try-Catch-Finally構文)は、アプリをより安全に、より安定的に動作させるための強力なコマンドです。

エラー処理を適切に行うことで、予期せぬエラーによるアプリの停止を防ぎ、ユーザーに快適な体験を提供することができます。

また、例外エラー発生時の原因調査を短縮することも可能です。

ぜひ、例外処理コマンドをマスターして、より質の高いアプリを作成してください!

関連記事

【著者】

Jun

I’m Forguncy lover!

2019年にForguncyに出会い、今では、(自称)日本一のForguncyファンです。アップデート毎に増える機能にいつもワクワクしています。もっと、開発者にForguncyの魅力を知ってもらい、使いこなし、私たちと同じようワクワクする体験をして欲しいと思い、有志とともに2025年6月30日にForguncy Users Communityを立ち上げさせてもらいました。当サイトにアクセスした開発者がワクワクする情報を発信していきたいと思います。