ホームページ > バックエンド開発 > PHPの問題 > PHPでよくあるエラーのタイプは何ですか

PHPでよくあるエラーのタイプは何ですか

小老鼠
リリース: 2023-04-24 16:28:48
オリジナル
2062 人が閲覧しました

php の一般的なエラー タイプは次のとおりです: 1. 解析エラー タイプ、解析エラーまたは構文エラーを示します; 2. Fatalerror タイプ、致命的なエラーを示します; 3. 警告タイプ、警告エラーを示します; 4. 通知タイプ、示しますエラーへの注意; 5. 非推奨のタイプ。最低レベルのエラーを示します。

PHPでよくあるエラーのタイプは何ですか

このチュートリアルのオペレーティング システム: Windows 10 システム、PHP バージョン 8.1、Dell G3 コンピューター。

1. PHP エラー タイプ

PHP エラー レベル

解析エラー > 致命的エラー > 衰退中 > 通知 > 非推奨

1. 解析エラーまたは構文エラー (解析エラー)

構文エラーは、プログラミングにおいて最も一般的なエラーであり、次のような最も簡単に解決できます: ポイントの欠落、エラー メッセージ数に達すると表示されます。このエラーによりプログラムの実行が停止し、エラー メッセージが表示されます。エラーメッセージに基づいてプログラムを修正し、再実行できます。

[例] 以下では、単純なコードを使用して、一般的な構文エラーと関連するエラー メッセージを示します。

<?php
    $a = 1;
    $b = 2;
    $c = $a + $b
    echo ;
?>
ログイン後にコピー

; は、上記のコードの 4 行目の最後で省略されているため、上記のコードを実行すると、次のエラー メッセージが表示されます。結果、構文エラーが発生し、プログラムが下向きの実行を続行できなくなります。これらのエラーが解決されて初めて、プログラムはスムーズに実行できるようになります。

2. 致命的なエラー:

これは、PHP コンパイラーが PHP コードを理解しても、宣言されていない関数を認識するタイプのエラーです。これは、関数定義なしで関数を呼び出すことを意味します。

プログラムはエラーを直接報告するため、コードを変更する必要があります。 ! !プログラムの実行を中断するには、register_shutdown_function() 関数を使用して、プログラムが終了する前に関数をトリガーできます (例:

Parse error: syntax error, unexpected &#39;echo&#39; (T_ECHO) in D:\WWW\index.php on line 5
ログイン後にコピー

PHPでよくあるエラーのタイプは何ですか 説明: 10 行目では、関数 diff( ) が呼び出されますが、関数 diff() が宣言で定義されていないため、エラーが発生します。

3. 警告:

プログラムに構文エラーはありませんが、実行中に PHP はプログラムの不合理な部分を検出するため、警告メッセージが表示されます。と表示されますが、プログラムは引き続き実行されます。

例: 除数として 0 を使用すると、プログラムが誤って実行され、エラー メッセージが出力されます。

<?php 
function add($x, $y) { 
    $sum = $x + $y; 
    echo "sum = " . $sum; 
}
$x = 0; 
$y = 20;
add($x, $y); 
diff($x, $y); 
?>
ログイン後にコピー

エラー:

PHPでよくあるエラーのタイプは何ですか

4. 注:

これは、警告エラーと似ています。これは、プログラムにはエラーが含まれていますが、スクリプトの実行は許可されています。この問題は、未定義の変数、定数、または配列キーが引用符なしで使用され、プログラムが実行を継続した場合に発生します。

<?php
    $a = 1;
    $b = 0;
    $c = $a / $b;
    echo "$a / $b = $c";
?>
ログイン後にコピー

説明: このプログラムは、宣言されていない変数 $y を使用するため、エラー メッセージが表示されます。

5. 最低レベルのエラー (非推奨、非推奨、非推奨)

期限切れの関数を使用すると発生し、プログラムは引き続き実行されます。

2. PHP エラー設定

スクリプトで設定するだけでなく、php.ini 設定ファイルで設定することもできます

<?php  
header("content-type:text/html;charset=utf-8");
$x = "PHP中文网"; 
echo $x; 
echo $y; 
?>
ログイン後にコピー

3 , PHP 例外

PHP 例外は PHP5 の新機能です。JAVA/C# 例外とは異なり、PHP 例外は、によって自動的にスローされるのではなく、 throw new Exception によって手動でスローされる必要があります。システム。

PHP エラーと例外の違い。これらは 2 つの異なる概念ですが、共通点があります:

例外がキャッチされ処理されない場合、プログラムは終了し、致命的エラーが発生します。これを見ると、誰もが異常ではないかと疑うでしょう。これは幻想ですが、このように理解できます。ただし、例外がキャッチされた後もプログラムは実行を続けることができますが、実際の致命的エラーが発生した後にプログラムを終了する必要があります。

例外は

try{}catch(){}

を使用してキャプチャできます。キャプチャ後も後続のコードは引き続き実行できますが、エラーは try{}catch( ){ }捕獲されました。 例外がスローされた場合は、それをキャッチする必要があります。そうしないと、プログラムは実行を終了します。

4. PHP 例外とエラーのスロー

例外のスロー:

throw new Exception('Some Error Message');

スローされたエラー:

trigger_error();

trigger_error()

トリガーされたエラーは、try-catch 例外キャプチャ ステートメントでは捕捉されません#5. PHP エラー処理

error_reporting = E_ALL&~E_NOTICE; //设置错误报告级别
display_errors = 1; //开发环境开启,生产环境关闭
ログイン後にコピー
は、非推奨、通知、および衰退の 3 つのレベルのエラーのみを処理でき、処理後、スクリプトはエラーが発生した次の行の実行を継続します。 。
set_error_handler()
ログイン後にコピー

このメソッドはスクリプト終了前の最後のコールバック関数であるため、die()/error(例外)/スクリプトが正常に終了したかどうかに関わらず、

と呼ばれます。

6. PHP 例外処理

register_shutdown_function()
ログイン後にコピー
デフォルトの例外ハンドラーを設定します。try/catch キャプチャがある場合、この関数は実行されません。それ以外の場合は実行されます。が実行されると、例外が発生した後、スクリプトは実行を継続しません。コード 1 行で、プログラムはすぐに終了します。

set_Exception_handler()

Notes

set_exception_handler(“myException”) 不仅可以接受函数名,还可以接受类的方法(公开的静态方法 及 公开的非静态方法 都可以),但需要以 数组形式 传递,数组的第一值为“类名”,第二个参数为“方法名”,如下代码所示:

<?php
class App{
    function myException($exception) {
        echo "<b>Exception:</b> " , $exception->getMessage();
    }
}
set_exception_handler(array(&#39;App&#39;,&#39;myException&#39;));
 
throw new Exception(&#39;Uncaught Exception occurred&#39;);
?>
ログイン後にコピー

七、PHP7 异常处理的大变化

在PHP7之前,Deprecated、Notice、Waning这类错误是可以捕获的(使用set_error_handler()函数),而Fatel Error无法捕获的。

在PHP7之后,出现了一个异常与错误通用的接口Throwable,Exception类与Error类都实现了该接口,导致Error类或Error类的派生类的错误对象(大部分Fatel Error,而之前三类错误不变)也可以像Exception一样被捕获(2种捕获方法:1、try/catch 2、set_exception_handler())。

以上がPHPでよくあるエラーのタイプは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート