;
$errorMsg を返す
}
}
$email = "someone@example.com";
試してみてください
{
//
かどうかを確認する
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
{
//メールが無効な場合は例外をスローします
新しいカスタム例外($email)をスローします
}
// メールアドレスに「example」が含まれているかを確認します
if(strpos($email, "例") !== FALSE)
{
throw new Exception("$email は電子メールの例です");
}
}
キャッチ (カスタム例外 $e)
{
エコー $e->errorMessage();
}
catch(例外 $e)
{
エコー $e->getMessage();
}
?>
説明例: 上記のコードは 2 つの条件をテストします。いずれかの条件が true でない場合は、例外がスローされます。
1.customException() クラスは古い例外クラスの拡張として作成されるため、古いクラスのすべてのプロパティとメソッドが継承されます。
2. errorMessage() 関数を作成します。電子メール アドレスが不正な場合、この関数はエラー メッセージを返します。
3. 「try」コード ブロックを実行すると、最初の条件では例外はスローされません。
4. 電子メールには文字列「example」が含まれているため、2 番目の条件により例外がトリガーされます。
5. 「catch」コード ブロックは例外をキャッチし、適切なエラー メッセージを表示します。
customException をキャッチせず、基本例外をしっかりとキャッチした場合は、そこで例外を処理し、例外がスローされたときに、標準とは異なる方法で処理することが必要な場合があります。 「catch」コード ブロックで例外が再度スローされます。コードは次のとおりです:
概要: PHP 例外を使用するには 3 つの手順があります:
ステップ 1: 例外クラスを定義します。定義されていない場合は、システムのデフォルトの例外クラスを使用します。
ステップ 2: 例外が発生した場合、 throw を使用して例外をスローします (例: ex1($num2); 例外のパラメーターは $num2 で、これは例外の getMessage() を使用して取得されます。
ステップ 3: 例外をトリガーし、try 句を使用し、条件が満たされた場合に throw new ex1($num);
ステップ 4: 例外 catch (ex2 $e) をキャッチします。これは、定義された例外クラス ex2 を $e としてインスタンス化するのと同等です。
複数の例外を定義できますが、トリガーできるのは 1 つだけであることに注意してください。つまり、catch でキャプチャできる例外は 1 つだけです。
基本的な例外クラス、例外をスローできる関数を作成します:
コードをコピーします
コードは次のとおりです:
関数番号($num){
if ($num>1){//例外スロー条件
$msg="値は 1 より大きくすることはできません";//例外メッセージ
throw new Exception($msg);//例外をスローします
}
echo "値は 1 未満です";
}
//「try」コードブロックで例外をトリガーします
{
を試してください
番号(3);
echo "正常に実行されました"
}
//例外をキャッチします
catch (例外 $e){
echo "エラーメッセージ:".$e->getMessage();//Exception() システムメソッドで例外情報を取得します
echo "Error file:".$e->getFile();//Exception() のシステムメソッドは例外ファイル名を取得します
echo "行数:".$e->getLine();//異常行数を取得するException()のシステムメソッド
}
//=============================================== ======================
エコー "
=========================================== ============
";
//基本例外クラスを拡張する
function checkEmail($email){//EMAIL の有効性を判断するために例外をスローできる関数を定義します
if (filter_var($email,FILTER_VALIDATE_EMAIL)==false){
throw new checkEmailException($email);//例外をスローし、パラメータとして EMAIL を使用します
}
echo "メールは正当です";
}
class checkEmailException extends Exception{// 拡張例外クラスを定義します
パブリック関数 errormsg(){
$msg="エラーの理由: ".$this->getMessage()." は有効な EMAIL アドレスではありません!";
$msg.="エラー ファイル名:".$this->getFile();
$msg.="エラー行番号:".$this->getLine();
$msg をエコーします。
}
}
$email="メール…..@chhua.com";
try {//例外をトリガーします
checkEmail($email);
}
//例外をキャッチします
catch (checkEmailException $e){
$e->エラーメッセージ();
}
//================================== 複数の例外のキャプチャ
エコー "
=========================================== =======
";
class ex1 extends Exception{//例外クラスを定義します
パブリック関数 msg(){
$msg="エラーの理由: ".$this->getMessage()." は 100
を超えています
";
$msg.="エラー ファイル:".$this->getFile()."
";
$msg.="エラー コード:".$this->getCode()."
";
$msg.="行数:".$this->getLine()."
";
$msg をエコーします。
}
}
class ex2 extends Exception{//例外クラスを定義します
パブリック関数 msg(){
$msg="エラーの理由: ".$this->getMessage()." は 100
に等しいです
";
$msg.="エラー ファイル:".$this->getFile()."
";
$msg.="行数:".$this->getLine()."
";
$msg をエコーします。
}
}
$num2=100;
{
を試してください
if ($num2>100){//条件が満たされたときにトリガーします
新しい ex1($num2) をスローします
}
if ($num2==100){//条件が満たされたときにトリガーします
新しい ex2($num2) をスローします。
}
}
catch (ex2 $e){// トリガーされた例外をキャッチします
$e->msg();
}
catch (ex1 $e){// トリガーされた例外をキャッチします
$e->msg();
}
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/940486.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/940486.html
技術記事
phpの例外処理方法まとめ、phpの例外処理方法まとめ この記事ではphpの例外処理方法を例を交えてまとめています。参考のためにみんなで共有してください。具体的な分析は次のとおりです: 例外がトリガーされると、...