PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのAssertionErrorとは?assert()によるアサーション失敗時のエラー処理を解説

はじめに

AssertionError クラスは、Error クラスのサブクラスです。このエラーは、assert() が FALSE を返した場合、つまりアサーション(表明)が失敗したときにスローされます。

assert() は与えられたアサーションが真か偽かをチェックし、偽であった場合に AssertionError をスローします。assert() 関数は以下のように定義されています。

構文

PHP 5 および PHP 7
assert ( mixed $assertion [, string $description ] ) : bool

PHP 7 のみ
assert ( mixed $assertion [, Throwable $exception ] ) : bool

パラメータ

番号パラメータと説明
1assertion
文字列またはブール式
2description
失敗時に表示されるメッセージ
3exception(PHP 7 のみ)
スロー可能な(Throwable)オブジェクト

PHP 7.0 以降、assert() は関数ではなく言語構造となりました。これにより、assertion パラメータには式を直接指定でき、第2引数には例外オブジェクトまたは説明文を渡せるようになっています。なお、PHP 7.2 以降では文字列による description の指定は非推奨となり、E_DEPRECATED 警告が発生する点に注意してください。

また、assert() によってスローされた AssertionError は、php.ini で assert.exception=on が有効になっている場合にのみ catch ブロックへ送られます。

AssertionError の使用例

次の例では、条件が真であることを assert() で検証しています。条件が真の場合は try ブロックが正常に実行され、偽の場合は catch ブロックから AssertionError のメッセージが表示されます。

コード例

<?php
$a = 10;
$b = 20;
try {
    if (assert($a == $b, "assert($a == $b) failed.")) {
        echo("assert($a == $b) was successful.");
    }
} catch (AssertionError $e) {
    echo $e->getMessage();
}
?>

実行結果

上記のコードを実行すると、以下のような結果が出力されます。

assert(10 == 20) failed.

この例では $a と $b の値が異なるため、アサーションが失敗し、catch ブロック内で設定したエラーメッセージが出力されています。開発段階での前提条件の検証やデバッグに assert() を活用することで、想定外の状態を早期に検出できます。

  1. 【初心者向け】PHPタグとは?基本構文からショートタグまで徹底解説

    PHPタグとは?定義と基本的な使い方PHPスクリプトは、拡張子が「.php」のテキストファイルとして作成され、Webサーバー上に保存されます。サーバー上のPHPパーサーは、<?php(開始タグ)と?>(終了タグ)という特殊な文字列を探し出します。この2つのタグは「PHPタグ」と呼ばれ、その間に記述されたステートメントのみがパーサーによって解釈・実行されます。PHPタグで囲まれたコードは、HTMLドキュメントの中に自由に埋め込むことができます。埋め込まれたPHPコードはサーバー側で実行され、その処理結果だけが出力されるため、残りのHTML部分はクライアントのブラウザーにあるHTMLパ

  2. PHPのpi()関数とは?使い方と定義済み定数との対応を実例付きで解説

    pi()関数の定義と使い方PHPのpi()関数は、数学定数π(円周率)の値を返す関数です。戻り値はfloat型の「3.14159265359」であり、PHPにあらかじめ定義されている定数M_PIとまったく同じ値になります。構文pi ( void ) : floatパラメータこの関数は引数を受け取りません。引数なしでそのまま呼び出すことができます。戻り値pi()関数は数学定数πの値を返し、定義済みの数学定数M_PIと等価です。数式の中では、M_PIの代わりにpi()関数を使うこともできます。対応するPHPバージョンこの関数はPHP 4.x、PHP 5.x、PHP 7.xのすべてのバージョンで利用