PHPのエラー処理を詳しく解説
PHP エラー処理の詳細な説明
エラー レポート
エラーの一般的な原因PHP プログラム 次の 3 つの領域:
1. 文法エラー
文法エラーは最も一般的であり、修正が簡単です。たとえば、コードにセミコロンがありません。このタイプのエラーは、スクリプトの実行を妨げます
# 2. 実行時エラー# この種のエラーは、通常、PHP スクリプトの実行を妨げませんが、現在行われている処理を妨げます。 。エラーを出力しますが、PHP スクリプトは実行を続けます
## 3. ロジックエラー## この種のエラーが最も厄介で、スクリプトの実行を妨げたり、エラー メッセージを出力したりすることはありません
[注意] php.ini設定ファイルのdisplay_errorsがデフォルトのonからoffに設定されている場合、エラーは表示されません
PHP スクリプト、ini_set( を呼び出すことができます) 関数、php.ini 設定ファイルを動的に設定します
ini_set("display_errors","On"); //すべてのエラー メッセージを表示します
エラーレベル
実は表の 13 種類のエラーは、注意レベル、警告レベル、エラー レベルの 3 つのカテゴリに分類できます。一般に、開発プロセス中、アテンション レベルのエラーは無視されます<?php
getType($a);//未定义变量,注意级别
echo "1111111111111111<br>"; getType();//未传入参数,警告级别
echo "222222222222222222222<br>";
getType3();//函数名错误,错误级别
echo "333333333333333333333<br>";
?>
デフォルトのエラー レベルでは、すべてのレベルのエラーが表示されます。 error_reporting = E_ALL
error_reporting = E_ALL
を # に変更します。 # #error_reporting = E_ALL & ~E_NOTICE
error_reporting = E_ALL & ~E_NOTICE
気付かないエラー (デフォルト値) をスローします
error_reporting = E_ERROR | E_PARSE | E_CORE_ERROR
error_reporting = E_ALL & ~(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE) ユーザー原因のエラーを除くすべてのエラーをレポートします
# PHP スクリプトでは、error_reporting() 関数を通じてエラー報告レベルを動的に設定できます
<?php error_reporting(E_ALL & ~E_NOTICE); getType($a);//注意级别 echo "1111111111111111<br>"; getType();//警告级别 echo "222222222222222222222<br>"; getType3();//错误级别 echo "333333333333333333333<br>";?>
カスタマイズされたエラー処理 エラー レポートの処理方法をカスタマイズします。これにより、標準の PHP エラー処理関数を完全にバイパスできるため、独自に定義した形式のエラー レポート、またはエラー レポートが印刷される場所を変更する次の状況では、エラー処理のカスタマイズを検討できます: 1. エラー情報を書き留め、運用環境での問題を迅速に発見する; 2. エラーをシールドする; 3. . エラーの出力を制御します。 ; 4. デバッグ ツールとして
# set_error_handler() 関数を使用してユーザー定義のエラー処理を設定します
<?php //error_reporting(E_ALL & ~E_NOTICE); //在php中注册一个函数来处理错误报告,替代默认的方式 set_error_handler("myerrorfun"); $mess = ""; //自定义错误报告处理函数 function myerrorfun($error_type, $error_message, $error_file, $error_line) { global $mess; $mess.="发生错误级别为{$error_type}类型, 错误消息<b>{$error_message}</b>, 在文件<font >{$error_file}</font>中, 第{$error_line}行。<br>"; } getType($a); echo "1111111111111111<br>"; getType(); echo "222222222222222222222<br>"; echo "--------------------------------------------<br>"; echo $mess; ?>
エラー ログ 一般に、プログラムは、プログラムの実行中にエラー情報を記録するためにエラー ログを保存します。また、エラー ログにはデフォルトの保存場所があります。エラー情報とエラーログの場所を変更できます
PHP.ini設定ファイルでは、エラーログに設定できる以下の項目があります
error_reporting = E_ALL
//すべてのエラーは PHP に送信されますdisplay_errors=Off
//エラー レポートを表示しませんlog_errors=On //ログ ステートメント レコードの場所を決定します
log_errors_max_log=1024 //各ログ項目の最大長
error_log=G:/myerror.log //エラーが書き込まれるファイルを指定
phpファイルでは、関数 error_log() を使用してエラー メッセージをカスタマイズできます。
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'><?phperror_log("登录失败了!");?></pre><div class="contentsignin">ログイン後にコピー</div></div>
例外処理
例外 (例外) 処理は、通常の動作を変更するために使用されます。指定されたエラーが発生したときにスクリプトの処理を実行するプロセスは、PHP5 の新しい重要な機能です。例外処理は、スケーラブルで保守が容易なエラー処理メカニズムであり、新しいオブジェクト指向のエラー処理メソッドを提供します
try{
使用try去包含可能会发生异常的代码
一旦出现异常try进行捕获异常,交给catch处理。
抛出异常语句:throw 异常对象。
}catch(异常对象参数){
在这里做异常处理。
}[catch(。,,){
.. .. ..
}]
<?php try { $error = 'Always throw this error'; throw new Exception($error); //创建一个异常对象,通过throw语句抛出 echo 'Never executed'; //从这里开始,try代码块内的代码将不会再被执行 } catch (Exception $e) { echo ‘Caught exception: ’.$e->getMessage()." "; //输出捕获的异常消息 } echo 'Hello World'; //程序没有崩溃继续向下执行?>
自定义异常
用户可以用自定义的异常处理类来扩展PHP内置的异常处理类。以下的代码说明了在内置的异常处理类中,哪些属性和方法在子类中是可访问和可继承的
<?phpclass Exception{ protected $message = 'Unknown exception'; // 异常信息 private $string; // __toString cache protected $code = 0; // 用户自定义异常代码 protected $file; // 发生异常的文件名 protected $line; // 发生异常的代码行号 private $trace; // backtrace private $previous; // previous exception if nested exception public function __construct($message = null, $code = 0, Exception $previous = null); final private function __clone(); // Inhibits cloning of exceptions. final public function getMessage(); // 返回异常信息 final public function getCode(); // 返回异常代码 final public function getFile(); // 返回发生异常的文件名 final public function getLine(); // 返回发生异常的代码行号 final public function getTrace(); // backtrace() 数组 final public function getPrevious(); // 之前的 exception final public function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息 // Overrideable public function __toString(); // 可输出的字符串}?>
[注意]如果使用自定义的类来扩展内置异常处理类,并且要重新定义构造函数的话,建议同时调用parent::__construct()来检查所有的变量是否已被赋值。当对象要输出字符串的时候,可以重载__toString() 并自定义输出的样式
<?php /* 自定义的一个异常处理类,但必须是扩展内异常处理类的子类 */ class MyException extends Exception{ //重定义构造器使第一个参数 message 变为必须被指定的属性 public function __construct($message, $code=0){ //可以在这里定义一些自己的代码 //建议同时调用 parent::construct()来检查所有的变量是否已被赋值 parent::__construct($message, $code); } public function __toString() { //重写父类方法,自定义字符串输出的样式 return __CLASS__.":[".$this->code."]:".$this->message."<br>"; } public function customFunction() { //为这个异常自定义一个处理方法 echo "按自定义的方法处理出现的这个类型的异常<br>"; } }?>
<?php try { //使用自定义的异常类捕获一个异常,并处理异常 $error = '允许抛出这个错误'; throw new MyException($error); //创建一个自定义的异常类对象,通过throw语句抛出 echo 'Never executed'; //从这里开始,try代码块内的代码将不会再被执行 } catch (MyException $e) { //捕获自定义的异常对象 echo '捕获异常: '.$e; //输出捕获的异常消息 $e->customFunction(); //通过自定义的异常对象中的方法处理异常 } echo '你好呀'; //程序没有崩溃继续向下执行?>
相关参考:php教程
以上がPHPのエラー処理を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

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

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

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

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7
