PHPエラー処理方法のまとめ_PHPチュートリアル

WBOY
リリース: 2016-07-20 11:12:01
オリジナル
1025 人が閲覧しました

php には多くのエラー処理メソッドがあり、特に php5 以降では、特別な php 処理クラスが提供されています。以下に、PHP エラー処理に関するメソッドとプログラムをいくつか集めて共有します。

プログラム内で直接判断

基本的なエラー処理: die()関数を使用します
最初の例は、テキストファイルを開くための簡単なスクリプトを示しています:

コードは次のとおりです コードをコピーします

< ?php
$file=fopen("welcome.txt","r");
?>

ファイルが存在しない場合は、次のようなエラーが表示されます:

警告: fopen(welcome.txt ) [function.fopen]: ストリームを開けませんでした:
C:webfoldertest.php の 2 行目にそのようなファイルまたはディレクトリはありません

詳細

コードは次のとおりです コードをコピー

< ?php

//何も処理せずにファイルを開きます
//$fp =fopen("aa.txt","r");
//echo "OK";

//処理中: ファイルが存在するかどうかを判定 file_exists
/*
if(!file_exists("aa.txt")){
echo "ファイルが存在しません";
//存在しない場合は終了します
exit();終了後、次のコードは実行されません
s} else {
$ fp = FOPEN ("aa.txt", "R");
// ... 操作後に fclose ($ fp) を閉じます。
//PHP でエラーを処理する 3 つの方法

//最初の方法: 単純な die ステートメントを使用します

/* if(!file_exists("aa.txt")){

die("ファイルが存在しません... }理 2 番目のタイプ: エラープロセッサ エラーレベルの処理 エラーメソッド

コードは次のとおりです & & & & & & & lt;? PHP // /* use error_function (error_level, error_message, return true;}
コードをコピー
) error_file,

error_file,

error_file, error_line,error_context)

この関数は、少なくとも 2 つのパラメータ (エラー レベルとエラー メッセージ) を処理できる必要がありますが、
最大 5 つのパラメータ (オプション: ファイル、行番号、エラー) を受け入れることができますcontext):

*/

// set_error_handler メソッドを書き換えます

// エラー E_WARNING が発生した場合、my_error 処理メソッドを呼び出します

set_error_handler("my_error",E_WARNING);

set_error_handler("my_error2",E_USER_ERROR);

//中国の対応するタイムゾーンを設定しますdate_default_timezone_set( 'prc'); ); date("Y-m-d G:i:s")."---".$message."rn",3,"myerror.txt"); // rn は改行を意味します
}

//ファイルは完了していません 処理はありません

//$fp =fopen("aa.txt","r");
//echo "OK";

//カスタム エラーを使用して、このトリガーを追加しますtrigger_error( ) 呼び出しを指定する関数 Custom error
$age=200;
if($age>150){
それは大きな問題です ", e_user_error);
// exit ();

}



? & Gt; メソッド


例外がキャッチされず、対応する処理に set_Exception_handler() を使用する必要がない場合、重大なエラー (致命的エラー) が発生し、「Uncaught Exception」エラー メッセージが出力されます。

例外をキャッチせずにスローしてみましょう:

コードは次のとおりです

コードをコピー





//例外を含む関数を作成します
function checkNum($number)
{

if($number>1)

{
throw new Exception("値は 1 以下である必要があります");

}

//例外をトリガーしますcheckNum(2);?> ;

上記のコードは次のようなエラーを受け取ります:

致命的なエラー: キャッチされない例外 '例外'
C:webfoldertest.php:6 のメッセージ '値は 1 以下である必要があります'
スタック トレース: #0 C:webfoldertest .php(12):
checkNum(28) #1 {main} throws in C:webfoldertest.php on line 6Try、throw and catch
上記の例のエラーを回避するには、例外を処理する適切なコードを作成する必要があります。

処理ハンドラには以下を含める必要があります:

1.Try - 例外を使用する関数は、「try」ブロック内に配置する必要があります。例外がトリガーされない場合、コードは通常どおり実行を続行します。ただし、例外がトリガーされると、例外がスローされます。
2.Throw - 例外をトリガーする方法を指定します。各「スロー」は少なくとも 1 つの「キャッチ」に対応する必要があります
3.Catch - 「キャッチ」コード ブロックは例外をキャッチし、例外情報を含むオブジェクトを作成します
例外をトリガーしましょう:

コードは次のとおりです。以下の通り コードをコピー

//例外をスローできる関数を作成する
function checkNum($number)
{
if($number>1)
{
throw new Exception( "値は 1 以下である必要があります");
}
return true;
}

//「try」コード ブロックで例外をトリガーします
try
{
checkNum(2);
// 例外がスローされた場合, このテキストは表示されません
echo 'これが表示された場合、番号は1以下です';
}

//例外をキャッチ
catch(Exception $e)
{
echo 'メッセージ: ' .$e- >getMessage();
}
?>

上記のコードは次のようなエラーを受け取ります:

メッセージ: 値は 1 以下である必要があります

カスタム例外クラスを作成する
カスタム例外ハンドラーを作成するとてもシンプルです。 PHP で例外が発生したときに関数を呼び出すことができる特殊なクラスを作成しただけです。このクラスは例外クラスの拡張である必要があります。

このカスタム例外クラスは、PHP の例外クラスのすべてのプロパティを継承しており、カスタム関数を追加できます。

例外クラスの作成を開始します:

コードは次のとおりです コードをコピー

classcustomException extends Exception
{
public function errorMessage()
{
//エラー メッセージ
$errorMsg = '.$this->getFile() の '.$this->getLine().' 行でエラーが発生しました
.': '.$this->getMessage( ).'< /b> は有効な電子メール アドレスではありません';
return $errorMsg;
}
}

$email = "someone@example...com";

try
{
// check if
if( filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
{
//電子メールが無効な場合は例外をスローします
throw new customException($email);
}
}

catch (customException $e)
{
// カスタム メッセージを表示
echo $e->errorMessage();
}
?>

この新しいクラスは、古い例外クラスのコピーに errorMessage() 関数を加えたものです。古いクラスのコピーであるため、古いクラスからプロパティとメソッドが継承され、getLine()、getFile()、getMessage() などの例外クラスのメソッドを使用できます。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/444611.html技術記事 php には多くのエラー処理メソッドがあり、特に php5 以降では、特別な php 処理クラスが提供されています。以下に、PHP エラー処理に関するメソッドとプログラムをいくつか集めて共有します。 ...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート