目次
関数の定義と使用法
小さな例:
php异常处理机制
语法格式:
例子:
ホームページ バックエンド開発 PHPチュートリアル PHP エラー処理と PHP 例外処理メカニズム_PHP チュートリアル

PHP エラー処理と PHP 例外処理メカニズム_PHP チュートリアル

Jul 13, 2016 am 10:35 AM

phpエラー処理

プログラムを開発する際、プログラムに問題が発生する場合があります。次の方法でエラーを見つけることができます。

開発段階: 開発中にすべてのエラーレポートを出力します。これはプログラムのデバッグに役立ちます
実行フェーズ: プログラムがいかなる種類のエラーレポートも出力しないようにします (ユーザー (技術者も非技術者も含む) には表示されません)

エラーレポートをログに書き込む
1. エラーレポートを指定します error_reporting = E_LL
2. エラー出力をオフにします。display_errors = Off
3. エラーログ機能をオンにします log_errors = On

1. デフォルトでは、エラーログの場所が指定されていない場合、デフォルトで WEB サーバーのログに書き込まれます
2. error_log オプションにファイル名 (書き込み可能) を指定します
3. オペレーティング システム ログ error_log=syslog に書き込みます

以下のコード例

れーれー
もちろん、php にはエラー情報を取得するための関数 error_get_last() も用意されています。

関数の定義と使用法

error_get_last() 関数は、発生した最後のエラーを取得します。 この関数は、最後に発生したエラーを配列として返します。 返された配列には 4 つのキーと値が含まれます。 [タイプ] - エラーのタイプ [メッセージ] - エラーメッセージ [file] - エラーが発生したファイル [line] - エラーが発生した行

小さな例:

<?php
//	error_reporting(E_ALL);
///	ini_set("display_errors", "off");
//	ini_set("error_log", "syslog");
//	ini_set("MAX_FILEUPLOAD", 200000000);
//	echo ini_get("upload_max_filesize");
//	error_log("this is a error message!!!!");
	getType($var);   //注意
	getType();  //警告
	getTye();  //错误  会终止程序运行
	echo "###########################<br>"; 
?>
ログイン後にコピー
これは私たちにとって非常に便利です。 。 。これはプログラムのデバッグやエラーのトラブルシューティングに役立ちますか?

これらのエラー レポート レベルは、エラー ハンドラーが処理するように設計されているさまざまな種類のエラーです。

価値定数説明2E_警告致命的ではない実行時エラー。スクリプトの実行を一時停止しないでください。 8E_NOTICE256E_USER_エラーユーザーが生成した致命的なエラー。これは、プログラマが PHP 関数trigger_error()を使用して設定する E_ERROR に似ています。 512E_USER_警告致命的ではないユーザー生成の警告。これは、プログラマが PHP 関数 trigger_error() を使用して設定する E_WARNING に似ています。 1024E_USER_NOTICEユーザーが生成した通知。これは、プログラマが PHP 関数trigger_error() を使用して設定する E_NOTICE に似ています。 4096E_RECOVERABLE_ERRORキャッチ可能な致命的なエラー。 E_ERROR と似ていますが、ユーザー定義のハンドラーによってキャッチされる可能性があります。 (set_error_handler() を参照)8191E_ALL

php异常处理机制

定义:

异常处理: 意外,是在程序运行过程中发生的意料这外的事,使用异常改变脚本正常流程

语法格式:

try
{ //...}
catch(Exception $e)
{ //...}
ログイン後にコピー

PHP中try{}catch{}是异常处理.

将要执行的代码放入TRY块中,如果这些代码执行过程中某一条语句发生异常,则程序直接跳转到CATCH块中,由$e收集错误信息和显示.

PHP中try{}catch{}语句

为了进一步处理异常,我们需要使用PHP中try{}catch{}----包括Try语句和至少一个的catch语句。任何调用 可能抛出异常的方法的代码都应该使用try语句。Catch语句用来处理可能抛出的异常。

例子:

我写一段代码:

自己定义一个异常类
作用:就是写一个或多个方法解决当发生这个异常时的处理方式
1. 自己定义异常类,必须是Exception(内置类)的子类, 可以查看PHP手册里面Exception(内置类)的使用方法
2. Exception类中的只有构造方法和toString()可以重写, 其它都final

<?php
class OpenFileException extends Exception {    //继承PHP的内置类

    function __construct($message = null, $code = 0){
        parent::__construct($message, $code);

        echo "wwwwwwwwwwwwwww<br>";
    }
    function open(){
        touch("tmp.txt");

        $file=fopen("tmp.txt", "r");

        return $file;
    }
}
?>
ログイン後にコピー

1. 如果try中代码没有问题,则将try中代码执行完后就到catch后执行
2. 如果try中代码有异常发生,则抛出一个异常对象(使用throw),抛出给了catch中的参数, 则在try中代码就不会再继续执行下去 直接跳转到catch中去执行, catch中执行完成, 再继续向下执行
注意: 提示发生了什么异常,这不是主要我们要做事,需要在catch中解决这个异常, 如果解决不了,则出去给用户在下面代码中,如果我没有这个TMP.TXT文件的话,就会抛出异常了。

如果有异常,我们调用OPEN方法就可以解决这个异常了。

<?php

try{

 $file=fopen("tmp.txt", "r");                                                           //  尝试读取这个文件
  if(!$file)
            throw new OpenFileException("文件打开失败");       //如果文件不存在则抛出异常
  
}catch(OpenFileException $e){  //$e =new Exception();
    
    echo $e->getMessage()."<br>";                                        //getMessage() 是PHP里面内置的方法,可以直接调用

    $file=$e->open();  


}
ログイン後にコピー

下面将代码进行整理以及多个异常处理方法:

<?php
/* 
 *   异常处理: 意外,是在程序运行过程中发生的意料这外的事,使用异常改变脚本正常流程
 *	
 *	PHP5中的一个新的重要特性
 *
 *	if(){
 *
 *	}else{
 *
 *	}
 *
 *	try {
 *
 *	}catch(异常对象){
 *
 *	}
 * 	
 * 		1. 如果try中代码没有问题,则将try中代码执行完后就到catch后执行
 * 		2. 如果try中代码有异常发生,则抛出一个异常对象(使用throw),抛出给了catch中的参数, 则在try中代码就不会再继续执行下去
 *			直接跳转到catch中去执行, catch中执行完成, 再继续向下执行
 *
 *
 *		注意: 提示发生了什么异常,这不是主要我们要做事,需要在catch中解决这个异常, 如果解决不了,则出去给用户
 *
 *	二、自己定义一个异常类
 *
 *		作用:就是写一个或多个方法解决当发生这个异常时的处理方式
 *
 *		1. 自己定义异常类,必须是Exception(内置类)的子类,
 *		2. Exception类中的只有构造方法和toString()可以重写, 其它都final
 *
 *	三、处理多个异常
 *
 *	
 *	自己定义功能类时如果在方法中抛出异常
 *
 *
 */

class OpenFileException extends Exception {

	function __construct($message = null, $code = 0){
		parent::__construct($message, $code);

		echo "wwwwwwwwwwwwwww<br>";
	}
	function open(){
		touch("tmp.txt");

		$file=fopen("tmp.txt", "r");

		return $file;
	}
}


class DemoException extends Exception {
	function pro(){
		echo "处理demo发生的异常<br>";
	}
}

class TestException extends Exception {
	function pro(){
		echo "这里处理test发生的异常<br>";
	}
}

class HelloException extends Exception {

}

class MyClass {
	function openfile(){
		$file=@fopen("tmp.txt", "r");

		if(!$file)
			throw new OpenFileException("文件打开失败");
	}

	function demo($num=0){
		if($num==1)
			throw new DemoException("演示出异常");
	}

	function test($num=0){
		if($num==1)
			throw new TestException("测试出错");
	}

	function fun($num=0){
		if($num==1)
			throw new HelloException("###########");
	}
}

try{
	echo "11111111111111<br>";

	$my=new MyClass();

	$my->openfile();
	$my->demo(0);
	$my->test(0);
	$my->fun(1);
	echo "22222222222222222<br>";
}catch(OpenFileException $e){  //$e =new Exception();
	
	echo $e->getMessage()."<br>";

	$file=$e->open();


}catch(DemoException $e){
	echo $e->getMessage()."<br>";
	$e->pro();
}catch(TestException $e){
	echo $e->getMessage()."<br>";
	$e->pro();
}catch(Exception $e){
	echo $e->getMessage()."<br>";
}

	var_dump($file);
	echo "444444444444444444444<br>";
ログイン後にコピー

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/742411.htmlTechArticlephp错误处理 当我们开发程序时,有时候程序出现了问题,我们就可以用以下几种办法找出错误。 开发阶段:开发时输出所有的错误报告,...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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のカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

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

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

See all articles
実行時の通知。

スクリプト検出エラーが発生する可能性がありますが、スクリプトが正常に実行されているときに発生することもあります。

レベル E_STRICT を除くすべてのエラーと警告。

(PHP 6.0 では、E_STRICT は E_ALL の一部です)