try/catch を使用したエラー処理
try/catch
ステートメントを使用して、プログラムでエラーが発生した後にコードを実行できます。try/catch
ステートメントは、次の場合に便利です。
エラーを回避する別の方法でプログラムを終了する
エラーによる不要な副作用をクリーンアップする必要がある
問題のある入力パラメーターまたはコマンドが多数ある
try/catch
ステートメントを、この疑似コードのようにコードのブロックに配置します。
try try block... catch catch block... end
try block
内でエラーが発生すると、MATLAB® は try
ブロックの残りのコマンドをスキップし、catch block
のコマンドを実行します。try block
内でエラーが発生しない場合、MATLAB は catch block
全体をスキップします。たとえば、try/catch
ステートメントはエラーのスローを回避できます。n
個の要素の中から k
個の要素の組み合わせ数を返す関数 combinations
を考えてみます。
function com = combinations(n,k) com = factorial(n)/(factorial(k)*factorial(n-k)); end
MATLAB は k > n
の場合にエラーをスローします。要素数 k
が全体の要素数 n
より多い状態では、組み合わせを作成することはできません。try/catch ステートメントを使用すると、エラーを回避して、入力の順序に関係なくこの関数を実行できます。
function com = robust_combine(n,k) try com = factorial(n)/(factorial(k)*factorial(n-k)); catch com = factorial(k)/(factorial(n)*factorial(k-n)); end end
robust_combine
は整数がどんな順序でも有効な入力として処理します。C1 = robust_combine(8,4) C2 = robust_combine(4,8)
C1 = 70 C2 = 70
また、catch
ステートメントの後に変数を入力するとエラーに関する詳細情報を取得できます。
catch MExc
MExc
は MException
クラス オブジェクトで、スローされたエラーの詳細情報が格納されます。MException
オブジェクトから情報にアクセスする方法の詳細については、MATLAB アプリケーションでの例外処理を参照してください。