PHP_PHP チュートリアルにおけるエラー処理と例外処理メカニズムの分析
例:
$a = fopen('test.txt','r');
//这里并没有对文件进行判断就打开了,如果文件不存在就会报错
?>
那么正确的写法应该如下:
if(file_exists('test.txt')){
$f=fopen('test.txt','r');
//使用完后关闭
fclose($f);
}
?>
一、PHP错误处理的三种方式A、简单的die()语句;
等价于exit();
例:
if(!file_exists('aa.txt')){
die('文件不存在');
} else {
//执行操作
}
//如果上面die()被触发,那么这里echo接不被执行
echo 'ok';
简洁写法:
file_exits('aaa.txt') or die('文件不存在');
echo 'ok';
B、自定义错误和错误触发器
1、错误处理器(自定义错误,一般用于语法错误处理)
创建自定义错误函数(处理器),该函数必须有能力处理至少两个参数(error_level和errormessage),但是可以接受最多五个参数(error_file、error_line、error_context)
语法:
function error_function($error_level,$error_message,$error_file,$error_line,$error_context)
//创建好后还需要改写set_error_handler();函数
set_error_handler('error_function',E_WARNING);//这里error_function对应上面创建的自定义处理器名,第二个参数为使用自定义错误处理器的错误级别;
错误报告级别(了解即可)
这些错误报告级别是错误处理程序旨在处理的错误的不同的类型:
值 | 常量 | 描述 |
---|---|---|
2 | E_WARNING | 非致命的 run-time 错误。不暂停脚本执行。 |
8 | E_NOTICE |
Run-time 通知。 脚本发现可能有错误发生,但也可能在脚本正常运行时发生。 |
256 | E_USER_ERROR | 致命的用户生成的错误。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_ERROR。 |
512 | E_USER_WARNING | 非致命的用户生成的警告。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_WARNING。 |
1024 | E_USER_NOTICE | 用户生成的通知。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_NOTICE。 |
4096 | E_RECOVERABLE_ERROR | 可捕获的致命错误。类似 E_ERROR,但可被用户定义的处理程序捕获。(参见 set_error_handler()) |
8191 | E_ALL |
所有错误和警告,除级别 E_STRICT 以外。 (在 PHP 6.0,E_STRICT 是 E_ALL 的一部分) |
2. エラートリガー (通常、論理エラーを処理するために使用されます)
要件: たとえば、年齢を受け取りたい場合、数値が 120 より大きい場合、エラーとみなされます
従来の方法:
if($age>120){
echo 'wrong age';exit();
}
トリガーを使用します:
if($ age>120){
//trigger_error('error message'[,'error level']);ここでのエラー レベルはオプションであり、エラーのレベルを定義するために使用されます
//ユーザー定義レベルには次の 3 つのタイプがあります: E_USER_WARNING 、 E_USER_ERROR 、 E_USER_NOTICE
trigger_error('age error');//これは呼び出し側システムのデフォルトのエラー処理方法であり、カスタム プロセッサを使用することもできます
}
//カスタムプロセッサ、上記と同じ
function myerror ($error_level,$error_message){
echo 'error text';
}
//同時に、システムのデフォルトの処理関数を変更する必要があります
set_error_handler('myerror' ,E_USER_WARNING);//上記と同様、最初のパラメータはカスタム関数の名前で、2 番目のパラメータはエラー レベルです [ここでのエラー レベルは通常、次の 3 つです: E_USER_WARNING、E_USER_ERROR、E_USER_NOTICE]
//これで、カスタムエラー処理関数は、trigger_error を使用して使用できます
練習問題:
date_default_timezone_set('PRC');
function myerror($) error_level,$error_message){
$info= "エラー番号: $error_leveln";
$info.= "エラーメッセージ: $error_messagen";
$info.= '発生時刻:'.date('Y-m-d H:i: s');
$filename='aa.txt';
if(!$ fp=fopen($filename,'a')){
'ファイル'.$filename の作成に失敗しました。'; is_writeable($filename)){
if(!fwrite($fp,$info) ){
echo 'ファイルの書き込みに失敗しました';
} else {
echo 'エラーメッセージは正常に記録されました';
fclose($fp) );
} else {
echo 'ファイル'.$filename.' は書き込み可能ではありません ';
exit();
$fp=fopen('aaa.txt) ','r');
?> デフォルトでは、php.ini の error_log 設定に従って、php はエラー記録をサーバーのエラー記録システムまたはファイルに送信します。エラー レコードは、error_log() 関数を使用してファイルまたはリモートの宛先に送信できます。
構文:
error_log(error[,type,destination,headers])
type 部分は通常 3 で、これは最後にエラー情報を追加することを意味します。元のコンテンツは上書きされます
destination は、保存されたファイルまたはリモートの宛先を表します
例: error_log("$error_info",3,"errors.txt");例外処理 【ポイント】
1. 基本構文
コードをコピー
コードは次のとおりです:
try{
//エラーまたは例外を引き起こす可能性のあるコード
//catch Catch Exception は定義された例外ですPHP のクラス
} catch(Exception $e){
Try - 例外を使用する関数は、「try」コード ブロック内に配置する必要があります。例外がトリガーされない場合、コードは通常どおり実行を続行します。ただし、例外がトリガーされると、例外がスローされます。
Throw - 例外をトリガーする方法を指定します。各「スロー」は少なくとも 1 つの「キャッチ」に対応する必要があります
キャッチ - 「キャッチ」コード ブロックは例外をキャッチし、例外情報を含むオブジェクトを作成します
例外をトリガーしましょう:
コードをコピーします
//例外をスローできる関数を作成します
function checkNum($number){
if($number>1){
//例外がスローされた場合、次のコード行は出力されません
echo ' これが表示された場合、番号は 1 以下です';
}catch(Exception $e){
//例外をキャッチ
echo 'Message: ' .$e->getMessage(); }
?>
上記のコードは次のようなエラーを受け取ります:
メッセージ: 値は 1 以下である必要があります。
例の説明:
上記のコードは例外をスローし、それをキャッチします:
checkNum() 関数を作成します。数値が 1 より大きいかどうかを検出します。その場合は、例外をスローします。
「try」コードブロックでcheckNum()関数を呼び出します。
checkNum() 関数で例外がスローされる
「catch」コード ブロックは例外を受け取り、例外情報を含むオブジェクト ($e) を作成します。
この例外オブジェクトから $e->getMessage() を呼び出すと、例外からのエラー メッセージが出力されます
ただし、「各スローはキャッチに対応する必要がある」という原則に従うために、トップレベルの例外が出力されます。ハンドラーは、Missed エラーを処理するように設定できます。
set_Exception_handler() 関数は、すべてのキャッチされなかった例外を処理するユーザー定義関数を設定できます
//最上位の例外ハンドラーを設定します
function myException($ e){
echo 'これは最上位の例外';
} //デフォルトの例外ハンドラーを変更します
set_Exception_handler("myException");
if($i<10){
throw new Exception('$i は 10 より大きい必要があります');
}catch(Exception $e){
//例外を処理します
echo $e->getMessage().'
' / /例外を処理せず、続行します。 Throw
Throw newException('errorinfo') // throw $e を使用して元のエラー メッセージを保持することもできます
}
カスタム例外クラスを作成します
code
try{
throw newcustomException('error message');
}catch(customException $e){
echo $e->errorMsg()
}
複数の catch を使用できます。さまざまな状況でエラーメッセージを返します
コードをコピーします
コードは次のとおりです:
}catch(customException $e){
echo $e->getMessage();
}catch( Exception $e1){
echo $e1->getMessage();
例外ルール
例外処理が必要なコードは try に配置する必要があります潜在的な例外をキャッチするためのコード ブロック。 各 try ブロックまたは throw ブロックには、対応する catch ブロックが少なくとも 1 つ必要です。 複数の catch ブロックを使用して、さまざまな種類の例外をキャッチします。 例外は、try コード内の catch ブロックで再スローできます。 つまり、例外がスローされた場合は、それをキャッチする必要があります。
http://www.bkjia.com/PHPjc/325500.html
true
http://www.bkjia.com/PHPjc/325500.html

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
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 にアップグレードする方法について説明します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

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

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

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

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

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