PHP 例外処理、エラースローおよびエラー コールバック関数、例外処理コールバック関数_PHP チュートリアル
PHPの例外処理、エラースローとエラーコールバック関数、例外処理コールバック関数
1. エラー、例外レベル定数テーブル
エラー: コンパイル中に見つからない実行時エラー。割り当てられていない変数を出力するには、エコーを使用することをお勧めします。この種の問題により、プログラムまたはロジックが続行できなくなり、中断する必要が生じます。
例外: ロジックは実行可能ですが、アプリケーションのシナリオを満たさないことがよくあります。そのため、例外は主に次のようなものに依存します。コード作成者は、判断後にスローし、例外をキャッチして、プログラムを中断せずにこれらの状況に対処できるようにプログラム フローを変更する必要があります。PHP の例外とエラーの定義は、特に古いバージョンの PHP ではあまり明確ではないようです。
录 エラーとログレコードの値
1 E_ERROR (整数) 致命的な実行時エラー。 |このタイプのエラーは、メモリ割り当てによって引き起こされる問題など、通常は回復不可能な状況です。その結果、スクリプトが終了し、実行が続行されなくなります。
4 E_PARSE (整数) コンパイル時の構文解析エラー。 |解析エラーはパーサーによってのみ生成されます。
8 E_NOTICE (整数) 実行時通知。 スクリプトがエラーとして表示される可能性のある状況に遭遇することを示しますが、正常に実行できるスクリプトに同様の通知がある場合もあります。
16 E_CORE_ERROR(整数) PHP の初期化および起動中に致命的なエラーが発生しました。 |このエラーは E_ERROR に似ていますが、PHP エンジン コアによって生成されます。 PHP 4 以降
32 E_CORE_WARNING(integer) PHP 初期化起動時に発生した警告 (致命的ではないエラー)。 |E_WARNING に似ていますが、PHP エンジン コアによって生成されます。 PHP 4 以降
64 E_COMPILE_ERROR(整数) 致命的なコンパイル時エラー。 |E_ERROR に似ていますが、Zend スクリプト エンジンによって生成されます。 PHP 4 以降
128 E_COMPILE_WARNING(整数) コンパイル時間の警告 (致命的ではないエラー)。 |E_WARNING に似ていますが、Zend スクリプト エンジンによって生成されます。 PHP 4 以降
256 E_USER_ERROR(整数) ユーザーによって生成されたエラー メッセージ。 |E_ERROR に似ていますが、ユーザーがコード内で PHP 関数trigger_error()を使用して生成されます。 PHP 4 以降
512 E_USER_WARNING(整数) ユーザーによって生成された警告メッセージ。 |E_WARNING に似ていますが、コード内で PHP 関数trigger_error()を使用してユーザーによって生成されます。 PHP 4 以降
1024 E_USER_NOTICE(整数) ユーザーが生成した通知情報。 |E_NOTICE に似ていますが、コード内で PHP 関数trigger_error()を使用してユーザーによって生成されます。 PHP 4 以降
2048 E_STRICT (整数) コード変更に対する PHP の提案を有効にします。 | PHP 5 以降、コードに最適な相互運用性と上位互換性があることを確認します
4096 E_RECOVERABLE_ERROR(整数) 捕捉できる致命的なエラー。 |これは、潜在的に危険なエラーが発生したが、まだ PHP エンジンが不安定な状態になっていないことを示します。エラーがユーザー定義のハンドルで捕捉されない場合 (「 set_error_handler()) を参照してください。これは E_ERROR となり、スクリプトは終了します。 PHP 5.2.0以降
8192 E_DEPRECATED(整数) 実行時通知。 | 有効にすると、将来のバージョンで正しく動作しなくなる可能性があるコードに対して警告が表示されます。 PHP 5.3.0以降
16384 E_USER_DEPRECATED(整数) 家計資産が低い場合の警告メッセージ。 |E_DEPRECATED に似ていますが、コード内で PHP 関数trigger_error()を使用してユーザーによって生成されます。 PHP 5.3.0以降
30719 E_ALL (整数) E_STRICT すべてのエラーおよび警告メッセージ。
*PHP 5.3.x では 30719、PHP 5.2.x では 6143、以前は 2047
2. error_reporting() と try-catch がスローされる
error_reporting() 関数は、(パラメーターが渡されない場合) スクリプトが処理する例外を取得および設定できます (すべての例外を処理する必要はありません。たとえば、E_CORE_WARNING、E_NOTICE、E_DEPRECATED は無視できます)。この設定は php を上書きします。 ini error_reporting オプションで定義された例外処理設定。
例:
リーリー
try-catch は、クラスの自動ロード関数 __autoload() 内では有効になりません。
try-catch は、trigger_error() によって引き起こされるエラーなど、例外をキャッチするために使用されます。


例:


例外クラス構造: ほとんどのメソッドは書き換えが禁止されています(最終)


拡張例外クラス
try-catch には複数の catch 句を含めることができます。最初の catch 句から始めて、句内の例外変数の型が throw ステートメントによってスローされた例外の型と一致する場合、その句が実行され、他の catch は実行されません。例外はすべての例外クラスの基本クラスであるため、異なる例外の種類に応じて異なる処理メソッドを使用する必要がある場合は、Exception タイプの catch を使用する必要があります。句は最後に置かれます。
Exception はすべての例外の基本クラスであり、実際のニーズに応じて例外クラスを拡張できます


catch 句で例外の種類を決定したり、コードなどの情報に基づいて例外を処理するかどうかを決定したりできます。catch 句で記述したコードがキャッチした例外を適切に処理できない場合は、catch 句内で続行できます。 . 例外をスローします。
3. 例外コールバック関数


例外コールバック関数は、set_error_handler のコールバック関数のように true を返して例外を解消することはできません。そのため、コールバック関数が例外を処理しても、後続のコードは実行されません。 try-catch を使用する必要があります。try-catch 内でキャッチされた例外は Exception_handler をトリガーしません。
ただし、例外があります。スローされた例外が処理されない場合でも、スクリプト終了コールバック関数は実行できます。
register_shutdown_function(コールバック関数名[,引数1,引数2,...]);
例:

<span>function</span><span> shutdownfunction(){ </span><span>echo</span> 'script is end'<span>; } </span><span>register_shutdown_function</span>("shutdownfunction");

因为 shutdownfunction() 在脚本结束时被执行,所以 这个回调函数之内可以调用脚本中任意位置的函数,即使该函数定义在 错误抛出位置之后(函数定义是在 脚本编译期完成的)。
四、trigger_error(string errorMsg[,int user_error_type])
该函数用于主动触发一个错误: user_error_type 只能是 E_ALL、E_USER_ERROR、 E_USER_WARNING、 E_USER_NOTICE 或其组合的值。
注册 error (包括系统抛出的 Error 和 用户抛出的 Error )的处理函数和消除 error:
<span>set_error_handler</span>(<span>callback</span> functionName[,user_error_type]); <span>//</span><span> 为 trigger_error() 设置一个回调函数来处理错误,包括系统抛出的错误和用户使用 trigger_error() 函数触发的错误。</span>
可选参数 user_error_type :
如果设定此参数,则 trigger_error 抛出的错误类型符合 在user_error_type 的定义范围才能触发回调函数。
这个值的设置类似于 error_reporting() 函数 。
第一个参数(callbeck functionName):
一个函数名,该函数 可以有 5 个参数,其中前 2 个必选,依次是:
trigger_error 抛出的 user_error_type、trigger_error 抛出的 errorMsg、抛出错误的文件的绝对路劲、抛出错误的行号、抛出错误时的上下文环境 (一个数组,包含了trigger_error() 所在作用域内的所有变量、函数、类等数据 )
回调函数的返回值: 如果返回 false ,系统错误处理机制仍然继续抛出该错误,返回 true 或 无返回值 则消除错误。
你可以使用 set_error_handler() 来将 PHP 程序 抛出的错误代理给 ErrorException使错误可以类似异常那样显示:

<span>function</span> error_handler(<span>$errorType</span>, <span>$errorMsg</span>, <span>$errorFile</span>, <span>$errorLine</span><span> ) { </span><span>echo</span> '<div>; </span><span>throw</span> <span>new</span> ErrorException(<span>$errorMsg</span>, 0, <span>$errorType</span>, <span>$errorFile</span>, <span>$errorLine</span><span>); } </span><span>set_error_handler</span>('error_handler'<span>); </span><span>count</span>();

用户使用 trigger_error() 触发的错误不会被 try-catch 异常捕获语句捕获。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
