ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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

MATLAB から次のコード アナライザー メッセージが表示されることがあります。「行 4: CATCH の後に、エラー情報を取得する識別子を指定するようにお勧めします。」 このメッセージは、catch ステートメントの後に変数を入力するとエラーに関する詳細情報を取得できるということを述べています。

catch MExc

MExcMException クラス オブジェクトで、スローされたエラーの詳細情報が格納されます。MException オブジェクトから情報にアクセスする方法の詳細は、「MATLAB アプリケーションでの例外処理」を参照してください。

参考

|

この情報は役に立ちましたか?