主要内容

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

throwAsCaller

呼び出し元の関数内で発生しているかのように例外をスロー

説明

throwAsCaller (异常は,例外が呼び出し元の関数内で発生しているかのように例外をスローします。例外により現在実行している関数は終了して、制御をキーボードまたは囲んでいるブロックのいずれかに返します。try / catchステートメントの外部から例外をスローする場合,MATLAB®はコマンドウィンドウにエラーメッセージを表示します。

try / catchステートメントまたは関数MException.lastを介して,MExceptionオブジェクトにアクセスできます。

場合によっては,エラーで実際に例外をスローしている関数を指すよりも,例外をもたらす呼び出し元の関数内の場所を指す方が有益です。throwAsCallerを使用して,エラー表示を単純化することができます。

すべて折りたたむ

作業フォルダーで,関数sayHelloを作成します。

函数sayHello(N) checkInput(N) str = [“你好,”N“!”];disp (str)函数checkInput (N)如果~ischar(N) ME = MException(“sayHello: inputError”,'Input must be char.');把(我)结束

コマンドプロンプトで,数値を入力して関数を呼び出します。

sayHello (42)
使用sayHello>checkInput(第9行)时出错。错误在sayHello(第2行)checkInput(N)

スタックの頂点が9行目を参照するのは,ここでMATLABが例外をスローするためです。最初のスタックフレームの後で,MATLABは呼び出し元関数からの情報を表示します。

sayHello.mの9行目の把(我)throwAsCaller(我)で置き換えて,関数を再度呼び出します。

sayHello (42)
使用sayHello时出错(第2行)。

保存先スタックの頂点が2行目を参照するのは,ここが呼び出し元関数のエラーの場所であるためです。

入力引数

すべて折りたたむ

エラーの原因と場所を含む例外。スカラーMExceptionオブジェクトとして指定します。

R2007bで導入