ドキュメンテーション

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

assert

条件が false の場合にエラーをスロー

構文

  • assert(cond)
  • assert(cond,msg)
  • assert(cond,msg,A1,...,An)
  • assert(cond,msgID,msg)
  • assert(cond,msgID,msg,A1,...,An)

説明

assert(cond) は、cond が false の場合にエラーをスローします。

assert(cond,msg) は、cond が false の場合、エラーをスローしてエラー メッセージ msg を表示します。

assert(cond,msg,A1,...,An) は、cond が false の場合、MATLAB® 関数 sprintf で使用されるような書式変換文字を含むエラー メッセージを表示します。msg 内の個々の変換文字は、値 A1,...,An の 1 つに変換されます。

assert(cond,msgID,msg) は、cond が false の場合、エラーをスローし、例外発生時にはエラー識別子を含めてエラー メッセージ msg を表示します。識別子により、エラーを区別し、MATLAB でエラーが発生したときの動作を制御することができます。

assert(cond,msgID,msg,A1,...,An) は、例外発生時のエラー識別子を含めた書式付きエラー メッセージを表示します。

すべて折りたたむ

x が、指定した最小値よりも大きいことをアサートします。

minVal = 7;
x = 26;

assert(minVal < x)

式の結果は true となり、アサートはパスします。

x が、指定した最小値と最大値の間にあることをアサートします。

maxVal = 13;

assert((minVal < x) && (x < maxVal))
Assertion failed.

式の結果は false となります。アサートは失敗し、MATLAB がエラーをスローします。

2 つの数値の積が倍精度数であることをアサートします。

a = 13;
b = single(42);
c = a*b;

assert(isa(c,'double'),'Product is not type double.')
Product is not type double.

c のデータ型を表示するよう、エラー メッセージを強化します。

assert(isa(c,'double'),'Product is type %s, not double.',class(c))
Product is type single, not double.

関数 assert を使用して、通常のコード実行で発生してはならない条件をテストします。係数が数値の場合、計算した平方根は数値でなければなりません。指定した係数と計算した平方根を使用する二次方程式はゼロでなければなりません。

function x = quadraticSolver(C)

validateattributes(C,{'numeric'},{'size',[1 3]})

a = C(1);
b = C(2);
c = C(3);

x(1) = (-b+sqrt(b^2-4*a*c))/(2*a);
x(2) = (-b-sqrt(b^2-4*a*c))/(2*a);
assert(isnumeric(x),'quadraticSolver:nonnumericRoots',...
    'Computed roots are not numeric')

y1 = a*x(1)^2+b*x(1)+c;
y2 = a*x(2)^2+b*x(2)+c;
assert(y1 == 0,'quadraticSolver:root1Error','Error in first root')
assert(isequal(y2,0),'quadraticSolver:root2Error','Error in second root')

end

関連する例

入力引数

すべて折りたたむ

アサート条件。有効な MATLAB 式として指定します。cond が false の場合、関数 assert はエラーをスローします。cond には、関係演算子 (<== など) と論理演算子 (&&||~ など) を含めることができます。論理演算子 andor を使用して複合式を作成できます。MATLAB は複合式を左から右に評価し、演算子の優先順位の規則に従います。

例: a<0

例: exist('myfunction.m','file')

アサーション エラーに関する情報。文字列として指定します。このメッセージは、エラー メッセージとして表示されます。文字列の書式を設定するには、\t\n などのエスケープ シーケンスを使用します。関数 sprintf によってサポートされる %s%d などの書式指定子も使用できます。A1,...,An 入力引数を介して変換指定子の値を指定します。詳細は、「テキストの書式設定」を参照してください。

    メモ:   エラー メッセージ文字列内の特殊文字 (\t\n%s%d など) を MATLAB で変換する場合、assert に複数の入力引数を指定しなければなりません。

例: 'Assertion condition failed.'

数値配列または文字配列。スカラー、ベクトル、行列または多次元配列として指定されます。この入力引数は msg の変換指定子に対応し、これを置き換える値を与えます。

アサーション エラーの識別子。文字列として指定します。メッセージ識別子を使用すると、エラー原因の特定に役立ち、また選択したエラーのサブセットをプログラム内で制御できます。

メッセージ識別子には componentmnemonic が含まれます。識別子は必ずコロンを含まなければならず、component:mnemonic というシンプルな形式に従います。component フィールドおよび mnemonic フィールドはそれぞれ、文字から始まっていなければなりません。残りの文字には英数字 (A ~ Z、a ~ z、0 ~ 9) とアンダースコアを使用できます。msgID に空白文字を含めることはできません。詳細は、「メッセージ識別子」を参照してください。

例: 'MATLAB:singularMatrix'

例: 'MATLAB:narginchk:notEnoughInputs'

詳細

すべて折りたたむ

ヒント

  • エラーを送出すると、MATLAB がそのエラーの情報を取得し、MException クラスのオブジェクトであるデータ構造に格納します。この例外オブジェクト内の情報には try/catch を使用してアクセスできます。また、例外によりプログラムが終了し、制御をコマンド プロンプトに返した場合は、MException.last を使用できます。

  • try ブロック内でアサーション エラーが発生した場合、MATLAB でのプログラムの実行は停止しません。この場合、MATLAB は制御を catch ブロックに渡します。

参考

|

R2007a で導入

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