Main Content

assert

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

説明

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

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

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

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

assert(cond,errID,msg,A) は、例外発生時のエラー識別子を含めて、書式設定されたエラー メッセージを表示します。

すべて折りたたむ

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

minVal = 7;
x = 26;

assert(minVal < x)

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

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

maxVal = 13;

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

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

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

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

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

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

assert(isa(c,'double'),'Product is type %s, not double.',class(c))
Error using assert
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 式として指定します。この式は logical 値か logical 値に変換可能でなければなりません。cond が false の場合、関数 assert はエラーをスローします。cond には、関係演算子 (<== など) と論理演算子 (&&||~ など) を含めることができます。論理演算子 andor を使用して複合式を作成できます。MATLAB は複合式を左から右に評価し、演算子の優先順位の規則に従います。

例: a<0

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

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

メモ

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

例: 'Assertion condition failed.'

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

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

エラー識別子には 1 つ以上の "コンポーネント" フィールドと 1 つの "ニーモニック" フィールドが含まれます。フィールドはコロンで区切られなければなりません。たとえば、コンポーネント フィールド component およびニーモニック フィールド mnemonic をもつエラー識別子は 'component:mnemonic' として指定します。コンポーネント フィールドとニーモニック フィールドはそれぞれ、文字で始まらなければなりません。残りの文字には英数字 (A ~ Z、a ~ z、0 ~ 9) とアンダースコアを使用できます。errID に空白文字を含めることはできません。詳細については、MException を参照してください。

例: 'MATLAB:singularMatrix'

例: 'MATLAB:narginchk:notEnoughInputs'

ヒント

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

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

拡張機能

バージョン履歴

R2007a で導入

すべて展開する