ホームページ > バックエンド開発 > PHPチュートリアル > PHP 関数でキャッチされなかった例外をデバッグするにはどうすればよいですか?

PHP 関数でキャッチされなかった例外をデバッグするにはどうすればよいですか?

PHPz
リリース: 2024-04-17 11:18:02
オリジナル
1257 人が閲覧しました

PHP 関数でキャッチされなかった例外をデバッグするにはどうすればよいですか? xdebug.scream を使用する: xdebug 拡張機能の xdebug.scream 構成オプションを有効にして、キャッチされなかった例外に関するブルー スクリーンと詳細なエラー メッセージを表示します。 register_shutdown_function を使用する: スクリプト実行の最後に実行されるコールバック関数を登録し、error_get_last() 関数を使用してキャッチされなかった例外をキャッチし、その情報を表示します。

如何调试 PHP 函数中未捕获的异常?

#PHP 関数でキャッチされなかった例外をデバッグするにはどうすればよいですか?

はじめに

キャッチされない例外により、PHP スクリプトの実行が中断され、追跡とデバッグが困難な内部エラーが発生する可能性があります。この記事では、このような例外をデバッグする 2 つの方法を紹介します。

方法 1: xdebug.scream を使用する

xdebug.scream は、キャッチされない例外が発生したときにブルー スクリーンを表示し、詳細なエラー メッセージを表示する xdebug 拡張構成オプションです。そして例外に関するスタックトレース。

xdebug.scream を有効にするには、php.ini ファイルに次の行を追加します。

[xdebug]
xdebug.scream=1
ログイン後にコピー

注: この方法を使用するには、xdebug 拡張機能をインストールして有効にする必要があります。

方法 2: register_shutdown_function を使用する

register_shutdown_function は、スクリプト実行の最後にコールバック関数を実行できるようにする PHP 関数です。この関数を使用すると、キャッチされなかった例外をキャッチできます:

register_shutdown_function(function() {
  // 获取未捕获的异常对象
  $error = error_get_last();

  if ($error) {
    // 显示异常信息
    echo "Uncaught Exception: {$error['message']}";
    echo "Stack trace: {$error['stacktrace']}";
  }
});
ログイン後にコピー

実用的なケース

次の関数があるとします:

function divide($x, $y)
{
  if ($y == 0) {
    throw new Exception('Cannot divide by zero');
  }

  return $x / $y;
}
ログイン後にコピー

If you don't' t Division() 関数でスローされた例外をキャッチします。これにより、次の内部エラーが発生します:

PHP Fatal error:  Uncaught Exception: Cannot divide by zero
ログイン後にコピー

この問題をデバッグするには、上記の 2 つの方法のいずれかを使用できます。

xdebug.scream を使用します:

// 启用 xdebug.scream
ログイン後にコピー
xdebug.scream=1
ログイン後にコピー

次に、divide() 関数を呼び出します:

divide(10, 0);
ログイン後にコピー

register_shutdown_function を使用します:

register_shutdown_function(function() {
  $error = error_get_last();

  if ($error) {
    echo $error['message'] . "\n" . $error['stacktrace'];
  }
});

// 调用 divide() 函数
divide(10, 0);
ログイン後にコピー

上記の方法は、キャプチャに役立ちます。キャッチされなかった例外に関する情報を表示して、例外をデバッグできるようにします。

以上がPHP 関数でキャッチされなかった例外をデバッグするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
PHP 拡張子 intl
から 1970-01-01 08:00:00
0
0
0
phpのデータ取得?
から 1970-01-01 08:00:00
0
0
0
PHP GET エラー レポート
から 1970-01-01 08:00:00
0
0
0
phpを上手に学ぶ方法
から 1970-01-01 08:00:00
0
0
0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート