主要内容

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

MException

エラー情報を取得する

説明

エラーを検出して例外をスローする MATLAB®コードは、すべてMExceptionオブジェクトを構築します。MExceptionオブジェクトには取得可能なエラー情報が含まれています。MATLABは事前定義された例外または自分で構築した例外をスローできます。

作成

説明

ME=ME例外(厄里德,msgtext)は、特定のエラーについての情報を取得して、MExceptionオブジェクトに保存します。MExceptionオブジェクトは、エラー識別子厄里德およびエラー メッセージmsgtextを使用して構築されます。

ME=ME例外(厄里德,msgtext,A1,…,一个)は、テキストまたは数値A1,…,一个を使用してエラー メッセージの書式を設定し、msgtextの変換指定子を実行時に置き換えることができます。

入力引数

すべて展開する

エラーの識別子。文字ベクトルまたは 一串スカラーとして指定します。例外処理でエラー識別子を使用すると、エラー原因を特定したり、プログラム内の例外のサブセットを選択して制御したりできます。

エラー識別子には 1.つ以上の"コンポーネント" フィールドと 1.つの"ニーモニック" フィールドが含まれます。フィールドはコロンで区切られなければなりません。たとえば、コンポーネント フィールド组成部分およびニーモニック フィールド记忆的をもつエラー識別子は'组件:助记符'として指定します。

  • 一般に、コンポーネント フィールドは、さまざまなエラーが生成される可能性のある製品や機能を指定します。たとえば、エラー識別子“MATLAB:TooManyInputs”にはコンポーネント フィールドMATLABがあります。これは、MATLABで例外がスローされることを意味します。異なるコンポーネントを前に追加する限り、同じニーモニック图曼因普茨を再使用できます。たとえば、多すぎる入力で関数が呼び出されるたびにツールボックスで例外をスローする場合は、“我的工具箱:TooManyInputs”を使用できます。

  • エラー識別子のニーモニック フィールドは、一般に、エラーの問題に固有のタグです。たとえば、MATLABであいまいな構文の使用の結果として生じるエラーを報告する場合、エラー識別子を“MATLAB:模糊语法”として指定できます。

コンポーネント フィールドとニーモニック フィールドはそれぞれ、文字で始まらなければなりません。残りの文字には英数字 (A~Z、A~Z、0~9)とアンダースコアを使用できます。厄里德には空白文字は使用できません。

例:'MyComponent:noSuchVariable'

例:'金宝appSimulink:信号:InvalidNumberOfPorts'

エラー原因に関する情報とその修正方法。文字ベクトルまたは 一串スカラーとして指定します。テキストの書式を設定するには、\t\nなどのエスケープ シーケンスを使用します。関数把格式数据写成串によってサポートされる%%dなどの書式指定子も使用できます。A1,…,一个入力引数を使用して変換指定子の値を指定します。

例:“打开文件时出错。”

例:'第%d行出错'

msgtext内の変換指定子と置き換える値。それぞれ、文字ベクトル、一串スカラー、または数値スカラーとして指定します。

プロパティ

すべて展開する

このプロパティは読み取り専用です。

エラーを一意に識別する文字ベクトル。入力引数厄里德によって文字ベクトルとして指定します。

例:“MATLAB:测试”

このプロパティは読み取り専用です。

MATLABが例外をスローする際に表示されるエラー メッセージを含む文字ベクトル。msgtext入力引数とA1,…,一个入力引数により指定します。

例:“找不到变量x”

このプロパティは読み取り専用です。

ファイル名 (文件)、関数名 (名称) および行番号 (线) などの、MATLABが例外をスローする場所のスタック トレース情報を含む構造体配列です。呼び出された関数でエラーが発生すると、呼び出された関数それぞれのファイル名、関数名および行番号が堆栈プロパティに含まれます。MATLABは例外をスローする場合にのみスタックを生成します。

堆栈は N行 1.列の结构配列です。Nは呼び出しスタックの深さを表します。

このプロパティは読み取り専用です。

MATLABが例外を作成する原因となったMExceptionオブジェクトの 单间牢房配列。addCauseメソッドを使用して、例外を原因プロパティに追加します。

このプロパティは読み取り専用です。

例外の修正候補。matlab.lang.correction.AppendArgumentsCorrectionオブジェクト、matlab.lang.correction.ConvertToFunctionNotationCorrectionオブジェクト、またはmatlab.lang.correction.ReplaceIdentifierCorrectionオブジェクトとして指定します。例外がスローされ、キャッチされない場合、MATLABは校正プロパティを使用して例外の修正を提案します。

オブジェクト関数

例外のスロー
最后一个例外 最新のキャッチされていない例外を返す
重演 前回キャッチされた例外を再度スローする
throwAsCaller 呼び出し元の関数内で発生しているかのように例外をスロー
addCause 例外の追加の原因を記録する
添加校正 例外の修正候補の提案
获取报告 例外のエラー メッセージを取得する

すべて折りたたむ

MExceptionオブジェクトを作成して、入力エラーについての情報を取得します。

厄里德=“myComponent:inputError”;msgtext='输入没有预期的格式。';ME=MException(errID,msgtext)
ME=MEException,具有以下属性:标识符:“myComponent:inputError”消息:“输入没有预期的格式。原因:{}堆栈:[0x1 struct]更正:[]

msgtextA1,…,一个の入力引数の両方を使用してエラー メッセージを作成します。

厄里德=“MATLAB:测试”;msgtext='此页上有%d个错误';A1=10;ME=MException(errID,msgtext,A1)
ME=MEException,属性为:标识符:“MATLAB:test”消息:“此页上有10个错误”原因:{}堆栈:[0x1 struct]更正:[]

入力変数名がワークスペースにない場合に例外をスローします。

str=输入('键入变量名:','s');如果~exist(str,“var”)ME=ME例外('MyComponent:noSuchVariable',...“找不到变量%s”,str);扔(我)终止

入力プロンプトでは、ワークスペースにない変数を入力します。たとえば、符号变量を入力します。

找不到变量notaviable

ワークスペースに不可变が存在しないため、MATLABはMExceptionオブジェクトを作成しスローします。

尝试,抓住を使用してMExceptionオブジェクトで取得された情報にアクセスします。

関数冲浪への入力なしの呼び出しを含むファイルmyfile.mを作成します (この関数の呼び出しは結果的に例外となりますが、説明を分かりやすくするためにそうしています)。MATLABがスローする例外をMExceptionオブジェクトでキャッチし、消息プロパティにアクセスしてエラー メッセージを表示します。

尝试冲浪接住我是迪普('错误消息:')disp(ME.message)终止
错误消息:输入参数不足。

エラー識別子を抽出します。

ME.identifier
ans='MATLAB:narginchk:notEnoughInputs'

堆栈プロパティの内容をクエリします。この例では、呼び出しスタックは 2.行 1.列の構造体配列で表されます。

对于i=1:numel(ME.stack)ME.stack(i)终止
ans=struct带字段:file:'matlabroot\toolbox\matlab\graph3d\surf.m'名称:'surf'行:49 ans=struct带字段:file:'c:\myMATLABfiles\myfile.m'名称:'myfile'行:2

堆栈の最初の要素は例外が発生したときのファイル名 (冲浪)、関数名 (冲浪)、行数 (49) を表示します。堆栈の 2.番目の要素は、呼び出し元のスクリプトで例外が発生した名前と行数を示します。

存在しない関数注释功能を呼び出すことで生成された例外を検出します。関数が定義されていないと、警告を発行して出力に値 0を割り当てます。

尝试a=函数(5,6);接住如果strcmp(ME.identifier,“MATLAB:未定义函数”)警告('函数未定义。正在分配值0。');其他的重播(我)终止终止
警告:函数未定义。正在分配值0。

注释功能への呼び出しは、それ自体がエラーになります。このコードで尝试接住を使用して未定義の関数の例外を検出し、警告として再パッケージ化することで、MATLABは引き続き後続のコマンドを実行することができます。検出された例外のエラー識別子が異なる場合、MATLABは例外を再スローします。

R2007bで導入