LoginSignup
0
0

More than 1 year has passed since last update.

例外処理が発生するか確認するプログラムを実装(2021年11月18日現在)

Posted at

例外処理が発生するか確認するプログラムを実装(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にしました。
スクリーンショット 2021-11-18 19.04.41.png

②作成したオブジェクトに作成したスクリプトをアタッチする。

インスペクターウィンドウのExceptionCheckExceptionThrowが表示されています。
スクリーンショット 2021-11-18 19.05.41.png

3.挙動を検証する

①シーンビューのプレイボタンをクリックすると、コンソールウィンドウに例外の有無が表示される。

インスペクターウィンドウのExceptionFlagにチェックを付けていないので、例外無しと表示される。
スクリーンショット 2021-11-18 19.13.46.png

②ヒエラルキーウィンドウに作成したオブジェクトを選択して、インスペクターウィンドウのExceptionFlagのチェックを付ける。

シーンビューのプレイボタンをクリックすると、コンソールウィンドウの表示が例外有りと表示される。
(チェックを付けると例外発生、外すと例外未発生)
スクリーンショット 2021-11-18 19.14.24.png


上記のスクリプトをコピーして、実装手順通り進めると試せるので、よろしければどうぞ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0