例外処理が発生するか確認するプログラムを実装(2021年11月18日現在)
インスペクターウィンドウでbool値を変更すると、例外の切り替えができるプログラムを実装する。
例外処理の基本を理解しやすくなると思ったので、作成してみました。
例外の切り替えができるプログラムの実装手順
1.スクリプトを作成する
using UnityEngine;
using System; // try/catchブロックの使用に必要
public class ExceptionThrow : MonoBehaviour
{
public bool exceptionFlag = false; // インスペクターウィンドウで例外の切り替えをするフラグ
void Start()
{
try
{
if(exceptionFlag) // 例外フラグがtrueのとき
{
throw new Exception(); // 例外を発生させる
}
Debug.Log("例外無し");
}
catch(Exception) // 例外が発生したら
{
Debug.Log("例外有り");
}
}
}
using System
try/catchブロックを使用する際に必要となるusingディレクティブ。
try/catchブロック
tryブロックで例外が発生した場合は、発生した時点でcatchブロックの処理に移行する。
tryブロックで例外が発生しなかった場合は、tryブロックの処理を継続して、catchブロックの処理は行われない。
catchブロックの引数には任意の例外クラスを設定する。
catchブロックの引数をException e
のような形にして、catchブロック内でe.Message
のように記述しても、Unityではc#の例外メッセージを取得できなかったのでe
は省いた。
throw式
throw new [任意の例外クラス]();
の形で、任意の例外を発生させることができる。(上記ではExceptionクラスを使用)
Exceptionクラス
アプリケーションの実行中に発生したエラーを表示するクラス。
2.作成したスクリプトを設定する
①ヒエラルキーウィンドウで右クリックして任意のオブジェクトを作成する。
②作成したオブジェクトに作成したスクリプトをアタッチする。
インスペクターウィンドウのExceptionCheck
にExceptionThrow
が表示されています。
3.挙動を検証する
①シーンビューのプレイボタンをクリックすると、コンソールウィンドウに例外の有無が表示される。
インスペクターウィンドウのExceptionFlagにチェックを付けていないので、例外無し
と表示される。
②ヒエラルキーウィンドウに作成したオブジェクトを選択して、インスペクターウィンドウのExceptionFlagのチェックを付ける。
シーンビューのプレイボタンをクリックすると、コンソールウィンドウの表示が例外有り
と表示される。
(チェックを付けると例外発生、外すと例外未発生)