主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

MATLABアプリケーションでの例外処理

概要

プログラムを計画,記述してテストする場合,異なる条件下で実行すると,いくら注意しても必ずしも期待どおりの結果が得られるとは限りません。プログラムにエラーチェックを加えることは,どのような条件下でも必ず信頼性の高い演算が行われるようにする上で有効です。

MATLAB®では,異なるタイプのエラーにプログラムがどのように応答するかを決めることができます。たとえば,ユーザーに入力を促すプロンプトを表示したり,より詳しいエラーや警告メッセージを表示したり,既定値を使って再計算するなどが考えられます。MATLABのエラー処理機能では,特定のエラー状況がプログラムによってチェックされ,その状況に応じて適切なコードが実行されます。

MATLABによって,実行中のコマンドやプログラムで重大なエラーが検出されると,エラー時に起こったことについての情報が収集され,エラーの理解に役立つメッセージが表示され,コマンドまたはプログラムが終了されます。これは,“例外のスロー”と呼ばれます。MATLABコマンド プロンプトでコマンドを入力しているとき、あるいはユーザー プログラムのコード実行中に、例外が発生する可能性があります。

コマンドラインでの例外の発生

MATLABプロンプトで例外が発生した場合は,次に述べるように,いくつかの処理方法を選択できます。

エラーメッセージから判定

MATLABで表示されたエラーメッセージを評価します。ほとんどのエラーメッセージでは,プログラムのエラーに対する直接の原因が表示されます。多くの場合は,原因とその状態を修正するのに何が必要であるかを見つけ出すために十分な情報が含まれています。

エラーの発生したコードのレビュー

エラーが発生した関数がMATLABプログラムファイルとして実装されている場合,エラーメッセージには次のような行が含まれているはずです。

冲浪冲浪の使用中にエラーが発生しました(49 行目)入力引数が不足しています。

テキストは,エラーが発生した関数の名前(この場合,冲浪)とその関数のプログラムファイル内でエラーが発生した行の番号を示しています。行番号をクリックすると,MATLABによってファイルが開き,エラーの発生したファイル内の位置にカーソルが配置されます。この行とそれ以前のコードを調べることによって,エラーの原因が見つかることがあります。

デバッガーでのコードのステップ実行

MATLABデバッガーを使用してエラーの発生するコードをステップ実行できます。下線の付いたエラーテキストをクリックすると,MATLABエディターでファイルが開き,エラーの発生した位置またはその近くにカーソルが配置されます。次に,その行のはじめのハイフンをクリックし,その位置にブレークポイントを設定します。プログラムを再び実行すると,MATLABではブレークポイントの位置で実行が一時停止され,プログラムコードをステップ実行できます。dbstop上错误コマンドは,エラーの位置を見つけるのにも便利です。

詳細は,MATLABプログラムのデバッグのドキュメンテーションの説明を参照してください。

プログラムコードでの例外の発生

プログラムファイルにプログラムを記述する場合には,プログラムを終了させるのではなく,例外を“キャッチ”して,処理または解決を試みることができます。例外をキャッチすると、通常の終了処理を一時的に停止し、エラーを処理するコード ブロックに入ります。このコード ブロックは、“抓ブロック”と呼ばれます。

抓住ブロックでは,以下を実行できます。

  • エラーについて取得された情報を調べる

  • ユーザーに報告する詳細な情報を収集する

  • 実行中タスクを他の方法で実行しようと試みる

  • エラーにより発生した望ましくない影響をクリーンアップする

抓住ブロックの最後に到達したときには,可能であればプログラムの実行を続けるか,プログラムを終了できます。

MExceptionオブジェクトを使用して,プログラム内の例外に関する情報にアクセスします。詳細については,例外への応答を参照してください。

新規例外の生成

プログラムコードでは,プログラムが機能しなかったり,許容できない結果になる条件が検出されると,例外がスローされます。次の処理が行われます。

  • エラーの内容と実行していたコードに関する情報を保存します。

  • エラーについてのその他の関連情報を収集します。

  • MATLABに例外をスローするように指示します。

MExceptionオブジェクトを使用して,エラーに関する情報を取得します。詳細については,例外のスローを参照してください。