【 PHP 】PHP8に入門してみた 213日目 PHPの基本 ( オブジェクト指向 例外処理 その3)

PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。

オブジェクト指向

スタックトレース情報

スタックトレースは、エラーが発生した際にエラーメッセージと一緒に表示される、関数呼び出しの履歴情報です。

スタックトレースは、どの関数がどの関数を呼び出したか、そしてエラーが発生した場所がどこかを示します。
以下は、PHPのスタックトレースを読み取るための基本的な手順です。

  1. エラーメッセージを確認します。
    エラーメッセージは、どのファイルのどの行でエラーが発生したかを示します。
  2. スタックトレースは関数呼び出しの履歴を示します。
    スタックトレースには、関数名、ファイル名、行番号が含まれます。
  3. スタックトレースの最初のエントリはエラーが発生した場所を示します。
    このエントリは、最も深い関数呼び出しであり、トップレベルの関数呼び出しである可能性があります。
  4. スタックトレースの残りのエントリは
    最初のエントリからの関数呼び出しの順序で表示されます。
    各エントリには、呼び出し元の関数名、ファイル名、行番号が含まれます。
  5. スタックトレースの各エントリを調べ、どの関数がどの関数を呼び出しているかを確認します。
    特定の関数が原因でエラーが発生している場合は、その関数を修正する必要があります。
  6. スタックトレースの最後のエントリは、PHPの処理を開始したファイルと行番号を示します。
    これは、エラーの原因となった関数呼び出しが発生した場所です。
Notice: Undefined variable: x in /path/to/file.php on line 5
Warning: Division by zero in /path/to/file.php on line 5
Stack trace:
#0 /path/to/file.php(10): bar()
#1 {main}

独自の例外クラス

独自の例外クラスも作成できるようです。
ルールとして、Exceptionクラスを継承する必要があるようです。
これにより、親クラスで定義されたプロパティやメソッドを使用できます。

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <title>こんにちは!</title>
    <!-- Bootstrapを有効化 -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" />
</head>

<body>
    <?php
    class MyException extends Exception
    {
        public function __construct($message, $code = 0, Exception $previous = null)
        {
            parent::__construct($message, $code, $previous);
        }

        public function __toString()
        {
            return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
        }
    }

    function myFunction($arg)
    {
        if ($arg < 0) {
            throw new MyException("Argument must be positive");
        }
    }

    try {
        myFunction(-1);
    } catch (MyException $e) {
        echo $e;
    }
    ?>
</body>

</html>

 

メモ

例外に対する熱量が(略

PHPPHP

Posted by raika@blog