ホームページ php教程 php手册 PHP错误和异长常处理总结

PHP错误和异长常处理总结

Jun 06, 2016 pm 08:24 PM
PHP例外処理 PHPのエラー処理

PHP提供了错误处理和日志记录的功能. 这些函数允许你定义自己的错误处理规则,以及修改错误记录的方式. 这样,你就可以根据自己的需要,来更改和加强错误输出信

通过日志记录功能,你可以将信息直接发送到其他日志服务器,或者发送到指定的电子邮箱(或者通过邮件网关发送),或者发送到操作系统日志等,从而可以有选择的记录和监视你的应用程序和网站的最重要的部分。
错误报告功能允许你自定义错误反馈的级别和类型,可以是简单的提示信息或者使用自定义的函数进行处理并返回信息.

为什么要使用错误处理?
1.是网站出错时对用户友好
2.更好的避免错误、调试、修复错误
3.避免一些安全风险
4.更好保证程序的健壮性
5.……
一、最简单的错误处理――die()
当我们预计有错误发生时,停止脚步的运行。比如连接数据库时:

复制代码 代码如下:


mysql_connect('localhost', 'root', '123456') or die ('连接数据库错误:'. mysql_error());


不过,简单地终止脚本并不总是恰当的方式。
二、自定义错误和错误触发器
我们创建一个错误处理专用函数,使用set_error_handler函数设置后,可以在 PHP 中发生错误时调用该函数。

1.定义错误处理函数的参数:

参数 描述

error_level 必需。为用户定义的错误规定错误报告级别。必须是一个值数。

     参见下面的表格:错误报告级别。

error_message 必需。为用户定义的错误规定错误消息。

error_file 可选。规定错误在其中发生的文件名。

error_line 可选。规定错误发生的行号。

error_context 可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。


2.错误基本预定义常量:

值 常量 说明 备注

1 E_ERROR (integer) 致命的运行时错误。这类错误一般是不可恢复的情况,例如内存分配导致的问题。后果是导致脚本终止不再继续运行。

2 E_WARNING (integer) 运行时警告 (非致命错误)。仅给出提示信息,但是脚本不会终止运行。

4 E_PARSE (integer) 编译时语法解析错误。解析错误仅仅由分析器产生。

8 E_NOTICE (integer) 运行时通知。表示脚本遇到可能会表现为错误的情况,但是在可以正常运行的脚本里面也可能会有类似的通知。

16 E_CORE_ERROR (integer) 在PHP初始化启动过程中发生的致命错误。该错误类似 E_ERROR,但是是由PHP引擎核心产生的。 since PHP 4

32 E_CORE_WARNING(integer) PHP初始化启动过程中发生的警告 (非致命错误) 。类似 E_WARNING,但是是由PHP引擎核心产生的。 since PHP 4

64 E_COMPILE_ERROR(integer) 致命编译时错误。类似E_ERROR, 但是是由Zend脚本引擎产生的。 since PHP 4

128 E_COMPILE_WARNING(integer) 编译时警告 (非致命错误)。类似E_WARNING,但是是由Zend脚本引擎产生的。 since PHP 4

256 E_USER_ERROR (integer) 用户产生的错误信息。类似 E_ERROR, 但是是由用户自己在代码中使用PHP函数trigger_error()来产生的。 since PHP 4

512 E_USER_WARNING(integer) 用户产生的警告信息。类似 E_WARNING, 但是是由用户自己在代码中使用PHP函数trigger_error()来产生的。 since PHP 4

1024 E_USER_NOTICE(integer) 用户产生的通知信息。类似 E_NOTICE, 但是是由用户自己在代码中使用PHP函数trigger_error()来产生的。 since PHP 4

2048 E_STRICT (integer) 启用 PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。 since PHP 5

4096 E_RECOVERABLE_ERROR(integer) 可被捕捉的致命错误。 它表示发生了一个可能非常危险的错误,但是还没有导致PHP引擎处于不稳定的状态。 如果该错误没有被用户自定义句柄捕获 (参见 set_error_handler()),将成为一个 E_ERROR 从而脚本会终止运行。 since PHP 5.2.0

8192 E_DEPRECATED (integer) 运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。 since PHP 5.3.0

16384 E_USER_DEPRECATED(integer) 用户产少的警告信息。 类似E_DEPRECATED, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 since PHP 5.3.0

30719 E_ALL (integer) E_STRICT出外的所有错误和警告信息。 30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously

(级别E_ERROR、E_USER_ERROR不能被自定义错误处理函数扑捉到)自定义错误函数中不能扑捉到致命错误信息,因为发生致命的运行时错误时脚本都是立即停止执行的。

3.触发错误
在脚本中用户输入数据的位置,当用户的输入无效时触发错误的很有用的。在 PHP 中,这个任务由 trigger_error() 完成。
您可以在脚本中任何位置触发错误,通过添加的第二个参数,您能够规定所触发的错误级别。

4.可能的错误类型:

1).E_USER_ERROR - 致命的用户生成的 run-time 错误。错误无法恢复。脚本执行被中断。
2).E_USER_WARNING - 非致命的用户生成的 run-time 警告。脚本执行不被中断。
3).E_USER_NOTICE - 默认。用户生成的 run-time 通知。脚本发现了可能的错误,也有可能在脚本运行正常时发生。
例如:

复制代码 代码如下:


trigger_error("出错了啊", E_USER_WARNING);
// 输出 Warning: 出错了啊 in xxxx 的错误信息

三、错误报告
默认地,根据在 php.ini 中的 error_log 配置,PHP 向服务器的错误记录系统或文件发送错误记录。
通过使用 error_log() 函数,您可以向指定的文件或远程目的地发送错误记录。比如把错误信息发送到邮箱中是一种好的方式。
更多错误处理文档见:

四、异常处理
当异常被抛出时,其后的代码不会继续执行,PHP 会尝试查找匹配的 “catch” 代码块。
如果异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么将发生一个严重的错误(致命错误),并且输出 “Uncaught Exception” (未捕获异常)的错误消息。
1.处理处理程序应当包括:

1.)try - 使用异常的函数应该位于 “try” 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。
2.)throw - 这里规定如何触发异常。每一个 “throw” 必须对应至少一个 “catch”
3.)catch - “catch” 代码块会捕获异常,并创建一个包含异常信息的对象

2.重新抛出异常

有时,当异常被抛出时,您也许希望以不同于标准的方式对它进行处理。可以在一个 “catch” 代码块中再次抛出异常。
脚本应该对用户隐藏系统错误。对程序员来说,系统错误也许很重要,但是用户对它们并不感兴趣。为了让用户更容易使用,您可以再次抛出带有对用户比较友好的消息的异常。

3.异常的规则

1).需要进行异常处理的代码应该放入 try 代码块内,,以便捕获潜在的异常。
2).每个 try 或 throw 代码块必须至少拥有一个对应的 catch 代码块。
3).使用多个 catch 代码块可以捕获不同种类的异常。
4).可以在 try 代码块内的 catch 代码块中再次抛出(re-thrown)异常。

简而言之:如果抛出了异常,就必须捕获它。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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 致命的エラー: キャッチされない例外「例外」の解決策 Aug 18, 2023 pm 03:28 PM

PHP は、Web サイトに強力で動的な機能を提供する、広く使用されているサーバー側プログラミング言語です。ただし、実際には、開発者はさまざまなエラーや例外に遭遇する可能性があります。一般的なエラーの 1 つは、PHPFatalerror:UncaughtException'Exception' です。この記事では、このエラーの原因とその修正方法について説明します。例外の概念 PHP では、例外とは、プログラムの実行プロセス中に発生する予期しない状況を指します。

PHP のエラー処理メカニズムとは何ですか? PHP のエラー処理メカニズムとは何ですか? May 12, 2023 pm 07:31 PM

PHP は、さまざまな Web アプリケーションの開発に使用できる、人気のある強力なサーバー側プログラミング言語です。他のプログラミング言語と同様に、PHP はエラーや例外が発生しやすいです。これらのエラーと例外は、プログラム エラー、サーバー エラー、ユーザー入力エラーなど、さまざまな理由によって発生する可能性があります。プログラムの実行の安定性と信頼性を確保するために、PHP はエラー処理メカニズムの完全なセットを提供します。 PHP エラー処理メカニズムの基本的な考え方は、エラーが発生すると、プログラムは実行を停止し、エラー メッセージを出力するというものです。我々はできる

PHP で構文エラーを処理する方法 PHP で構文エラーを処理する方法 Aug 07, 2023 pm 04:46 PM

PHP の構文エラーに対処する方法 はじめに: PHP プログラムを開発するとき、構文エラーが頻繁に発生します。構文エラーは、PHP 構文ルールに違反するコードによって発生し、スクリプトが正しく実行されなくなります。この記事では、PHP 構文エラーに対処するいくつかの方法を紹介し、対応するコード例を示します。エラー プロンプト機能の使用 PHP には豊富なエラー プロンプト機能が用意されており、開発プロセス中にこれらのプロンプトをオンにすると、構文エラーをタイムリーに検出して解決できます。エラーを設定するには、

PHP 例外処理のヒント: try...catch ブロックを使用して複数の例外をキャッチして処理する方法 PHP 例外処理のヒント: try...catch ブロックを使用して複数の例外をキャッチして処理する方法 Jul 29, 2023 pm 01:05 PM

PHP 例外処理のヒント: try...catch ブロックを使用して複数の例外をキャッチして処理する方法 はじめに: PHP アプリケーション開発において、例外処理は非常に重要な部分です。コード内でエラーまたは例外が発生した場合、適切な例外処理によりプログラムの堅牢性と信頼性が向上します。この記事では、try...catch ブロックを使用して複数の例外をキャプチャして処理する方法を紹介し、開発者がより柔軟で効率的な例外処理を実行できるようにします。例外処理の概要 例外とは、プログラムの実行中に発生するエラーまたは特殊な状況を指します。例外が発生した場合

PHP ファイル操作エラーを処理し、対応するエラー メッセージを生成する方法 PHP ファイル操作エラーを処理し、対応するエラー メッセージを生成する方法 Aug 08, 2023 am 10:30 AM

PHP ファイル操作エラーを処理し、対応するエラー メッセージを生成する方法 PHP を使用してファイル操作を実行すると、ファイルが見つからない、権限エラーなど、さまざまなエラーが発生する可能性があります。これらのエラーによりプログラムが適切に実行されなくなる可能性があるため、ファイル操作エラーを適切に処理することが非常に重要です。この記事では、PHP ファイル操作エラーを処理する方法と、対応するエラー メッセージを生成する方法を紹介します。 1. エラー制御演算子を使用したエラー処理方法 PHP には、エラーが発生する可能性のあるステートメントを実行する前に追加できるエラー制御演算子「@」が用意されています。

PHP ファイル パス エラーを処理し、対応するエラー メッセージを生成する方法 PHP ファイル パス エラーを処理し、対応するエラー メッセージを生成する方法 Aug 06, 2023 am 10:12 AM

PHP ファイル パス エラーを処理し、対応するエラー メッセージを生成する方法 PHP アプリケーションを開発および保守するときに、ファイル パス エラーが頻繁に発生します。存在しないファイルを参照したり、間違ったパスを指定したりすると、PHP で致命的なエラーがスローされ、アプリケーションが正常に実行できなくなります。この状況をより適切にデバッグして処理するために、次の方法で PHP ファイル パス エラーを処理し、対応するエラー メッセージを生成できます。絶対パスを使用する ファイルを参照するときは、相対パスではなく絶対パスを使用するようにしてください。

PHP プログラムでの例外分類のベスト プラクティス PHP プログラムでの例外分類のベスト プラクティス Jun 06, 2023 am 08:01 AM

PHP コードを記述する場合、例外処理はコードの堅牢性と保守性を高めるために不可欠な部分です。ただし、例外処理も注意して使用する必要があります。そうしないと、さらに問題が発生する可能性があります。この記事では、例外処理を有効に活用してコードの品質を向上させるのに役立つ、PHP プログラムでの例外分類のベスト プラクティスをいくつか紹介します。例外の概念 PHP では、例外とは、プログラムの実行中に発生するエラーまたは予期しない状況を指します。通常、例外が発生するとプログラムの実行が停止し、例外メッセージが出力されます。

PHP エラーの解決: 未定義のクラス メソッドの呼び出し PHP エラーの解決: 未定義のクラス メソッドの呼び出し Aug 18, 2023 pm 05:09 PM

PHP エラーの解決: 未定義のクラス メソッドの呼び出し PHP 開発プロセス中に、未定義のクラス メソッドを呼び出すエラーがよく発生します。この状況は通常、不規則なコード記述または存在しないクラス メソッドによって発生します。以下では、この問題を解決する一般的な方法をいくつか説明します。クラス メソッドが存在するかどうかを確認する: 未定義のクラス メソッドが呼び出されたことを示すエラー メッセージが表示された場合は、まず、そのメソッドが対応するクラスに存在するかどうかを確認します。 Method_exists() 関数を使用すると、クラスにメソッドが存在するかどうかを確認できます。

See all articles