目次
カスタムエラーハンドラー関数を定義します
set_error_handlerにハンドラーを登録します
特定のエラータイプを処理します
デフォルトのエラー処理を復元します
ホームページ バックエンド開発 PHPチュートリアル set_error_handlerを使用してPHPでカスタムエラーハンドラーを作成する方法

set_error_handlerを使用してPHPでカスタムエラーハンドラーを作成する方法

Oct 02, 2025 am 03:54 AM
php エラー処理

PHPのset_error_handlerは、回復可能なエラーをインターセプトし、制御されたロギングとユーザーフレンドリーな応答を可能にする関数を定義することにより、カスタムエラー処理を可能にします。 $ errno、$ errstr、$ errfile、$ errlineなどのパラメーターを受け入れて、エラーの詳細をキャプチャするために登録され、set_error_handler( "function_name"、error_types)を介して登録され、e_warningやe_noticeなどの特定のエラーをフィルタリングし、retore_error_handlerをrestore_handlerで返すことができます。 error_get_last。

set_error_handlerを使用してPHPでカスタムエラーハンドラーを作成する方法

PHPでset_error_handlerを使用すると、PHPのデフォルトエラーレポートに依存するのではなく、エラーを処理するカスタム関数を定義できます。これにより、ユーザーフレンドリーなメッセージのデバッグ、ログ、または作成に特に役立つエラー、表示、または処理方法をより制御できます。

カスタムエラーハンドラー関数を定義します

少なくとも1つのパラメーターを受け入れる呼び出し可能な関数を作成します:エラーレベル。完全なエラーの詳細をキャプチャするには、最大5つのパラメーターを含めることができます。

  • $ errno :エラーの重大度レベル(例:e_warning、e_notice)
  • $ errstr :エラーメッセージ
  • $ errfile :エラーが発生したファイル(オプション)
  • $ errline :エラー番号(オプション)
  • $ errcontext :アクティブなシンボルテーブルを含む配列(まったく使用されない)

例:

関数CustomErrorHandler($ errno、$ errstr、$ errfile、$ errline){
    //ファイルにエラーを記録します
    error_log( "error [$ errno] $ errstr in $ errfile on line $ errline"、3、 "error.log");

    //オプションでユーザーフレンドリーなメッセージを表示します
    エコー「エラーが発生しました。後でもう一度やり直してください。」;

    // PHPがデフォルトのハンドラーを使用しないようにします
    trueを返します。
}

set_error_handlerにハンドラーを登録します

機能を定義した後、 set_error_handlerを使用して登録します。この時点から、関数は回復可能なエラーを処理します。

set_error_handler( "customerrorhandler");

これで、通知または警告が発生すると(未定義の変数へのアクセスなど)、カスタム関数はデフォルトの動作の代わりにトリガーされます。

特定のエラータイプを処理します

e_warningやe_noticeなど、 set_error_handlerで2番目の引数を指定することにより、ハンドラーが管理するエラーをフィルタリングできます。

例 - 警告と通知のみを処理します:

set_error_handler( "customerrorhandler"、e_warning | e_notice);

これにより、致命的なエラー(この関数が処理できない)やその他の深刻な問題が発生しないようになります。

デフォルトのエラー処理を復元します

必要に応じて、 restore_error_handlerを使用してPHPのデフォルトエラーハンドラーに戻します。

restore_error_handler();

これは、アプリケーションの特定の部分でのみカスタム処理が必要な場合に役立ちます。

基本的に、 set_error_handlerは、致命的なPHPエラーを優雅に傍受および管理するのに役立ちます。覚えておいてください:これらの場合、 register_shutdown_functionerror_get_last()を使用することは、parse errorsやe_errorなどの致命的なエラーをキャッチしません。

以上がset_error_handlerを使用してPHPでカスタムエラーハンドラーを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Stock Market GPT

Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

PHPにシングルトンパターンを実装する方法は? PHPにシングルトンパターンを実装する方法は? Sep 25, 2025 am 12:27 AM

Singleton Patternは、クラスに1つのインスタンスしかないことを保証し、単一のオブジェクトがデータベース接続や構成管理などのシステムの動作を調整するシナリオのグローバルアクセスポイントを提供します。 2。その基本構造には、プライベート静的属性ストレージインスタンス、プライベートコンストラクターが外部の作成を防ぎ、プライベートクローニング方法がコピーを防止し、インスタンスを取得するためのpublic staticメソッド(getInstance()など)が含まれます。 3. getInstance()メソッドを呼び出してPHPで一意のインスタンスを取得し、何回呼び出されても同じオブジェクト参照を返します。 4.標準のPHPリクエストモデルでは、スレッドの安全性を考慮する必要はありませんが、同期の問題は長期的またはマルチスレッド環境で注意を払う必要があり、PHP自体はネイティブロックメカニズムをサポートしていません。 5。シングルトンは便利ですが、

PHPでnull coulescingオペレーター(??)を使用する方法は? PHPでnull coulescingオペレーター(??)を使用する方法は? Sep 25, 2025 am 01:28 AM

回答:PHPの空のマージ演算子(??)は、変数キーまたは配列キーが存在し、nullではないかどうかを確認するために使用されます。それが本当なら、それはその値を返し、それ以外の場合はデフォルト値を返します。長いISSET()チェックの使用を回避し、$ username = $ userInput ?? 'guest'などの未定義の変数や配列キーの処理に適しています。

PHPクラスでインターフェイスを実装する方法は? PHPクラスでインターフェイスを実装する方法は? Sep 25, 2025 am 05:34 AM

Interfaceを実装するには、Implementsキーワードを使用すると、クラスはインターフェイス内のすべてのメソッドの特定の実装を提供する必要があります。 2。インターフェイスを定義して、インターフェイスキーワードを使用してメソッドを宣言します。 3。クラスはインターフェイスを実装し、メソッドをオーバーライドします。 4.オブジェクトを作成し、メソッドを呼び出して結果を出力します。 5.クラスは複数のインターフェイスを実装して、コードの仕様と保守性を確保することができます。

PHPのXSSを防ぐためにユーザー入力をサニタイズする方法は? PHPのXSSを防ぐためにユーザー入力をサニタイズする方法は? Sep 25, 2025 am 05:19 AM

topreventxssinphp、sanitizeuserininputandescapeoutput basedoncontextusinghtmlspecialchars()forhtml、json_encode()forjavascript、andvalidattlywithfilter_var()forexectedDatatypes

PHPを使用してHTMLフォームにメソッドを取得および投稿する方法は? PHPを使用してHTMLフォームにメソッドを取得および投稿する方法は? Sep 25, 2025 am 03:46 AM

GETメソッドは、非敏感な情報に適したURLにデータを添付します。 POSTメソッドは、リクエスト本体を介してデータを送信します。これは、より安全で機密情報に適しています。

MBTI無料テストWebサイトEntrant_MBTIパーソナリティテスト無料リンクアドレス MBTI無料テストWebサイトEntrant_MBTIパーソナリティテスト無料リンクアドレス Sep 24, 2025 pm 05:00 PM

MBTI無料テストWebサイトの入り口はhttps://www.16personalities.com/chです。プラットフォームは中国のインターフェイスを提供します。ユーザーは、基本バージョンと完全なバージョンを含むテストを匿名で実行できます。彼らは、約15〜20分で72の質問に関する複数選択の質問を完了します。このシステムは、パーソナリティタイプのコード、人格分析、キャリアソーシャルの提案をカバーするパーソナライズされたレポートを即座に生成し、PDFエクスポート、保持なしのデータ暗号化と処理をサポートします。

PHPで2つの配列の交差点を見つける方法は? PHPで2つの配列の交差点を見つける方法は? Sep 26, 2025 am 06:23 AM

array_intersect()関数を使用して、各配列に存在する要素を同時に返す2つの配列の交差点を見つけ、キー名は最初の配列から保持されます。たとえば、$ arr1 = ['apple'、 'banana'、 'orange']; $ arr2 = ['banana'、 'kiwi'、 'apple'];結果は['apple'、 'banana']です。

PHPでデフォルトのタイムゾーンを設定する方法は? PHPでデフォルトのタイムゾーンを設定する方法は? Sep 26, 2025 am 06:22 AM

setthededefaultimezoneinphpusingdate_default_timezone_set( 'americ/new_york');

See all articles