PHP における例外処理とは何かを 5 分で説明します。

WBOY
リリース: 2023-04-10 17:58:02
オリジナル
2748 人が閲覧しました

前回の記事では「PHPで画像にウォーターマークを追加する方法を理解する必要があります」ということで、PHPでウォーターマークを追加する方法をサンプルを通して詳しく紹介しました。 PHP でのエラー処理に関する関連知識を引き続き見ていきますので、皆さんのお役に立てれば幸いです。

PHP における例外処理とは何かを 5 分で説明します。

PHP におけるエラーと例外の処理は、PHP で非常に頻繁に使用されますが、日常の開発では、セミコロンの追加忘れなどに必ず遭遇します。 、関数名が間違っている、関数が再定義されているなど、エラーは数多くありますが、開発プロセス中にエラーを見つけることができれば、開発にとって非常に有益であることは間違いありません。

したがって、プロジェクト開発時にプロセスを合理的に使用することは、エラーを見つけて修正し、開発をスピードアップするのに役立ちます。次に、エラー処理を理解する方法を見てみましょう。無料の「php エラー処理」教育ビデオを通じて学習することもできます。

PHP の例外処理クラス

PHP には、組み込みの例外処理クラス () があります。 Exception、このクラスには、プログラムの例外とエラーをキャプチャできるいくつかの例外処理関数が含まれています。

このクラスでより一般的に使用される関数は次のとおりです:

  • getTraceAsString(): 文字列にフォーマットされた関数を返します。 getTrace() 関数によって生成される情報

  • __toString(): 例外を生成する文字列情報。オーバーロードすることができます。この関数の先頭は 2 つのアンダースコアであることに注意してください。

  • getMessage(): 異常なメッセージの内容を返します

  • getLine(): エラーが発生したコード行番号を返します。

  • getCode(): 例外コードを数値形式で返します

  • getFile(): 例外が発生したファイル名を返します。

  • getTrace(): 戻り値backtrace() array

プログラム内の例外をキャプチャする

プログラム内の例外は、通常、それ自体は表示されません。現時点では、プログラム内で例外をキャッチするという目的は、try catch ステートメントと throw キーワードによって達成できます。

try catch ステートメントはフロー制御ステートメントに似ています。throw キーワードは例外をスローできます。条件付き選択と同様の構造を通じてプログラムで例外をキャプチャできます。 try catch ステートメントの構文形式は次のとおりです:

try{
    // 可能出现异常或错误的代码,比如文件操作、数据库操作等
}catch(Exception $a){    // $a 为一个异常类的对象
    // 输出错误信息
}
ログイン後にコピー

プログラム例外をキャッチする必要がある場合、キャッチする必要があるコードを try コード ブロックに入れる必要があります。上記の構文では、それぞれtry には少なくとも 1 つと対応する catch が必要です。 try コード ブロックが一致する例外をキャッチしない場合、コードは最後のキャッチにジャンプして続行します。

その中で生成された例外は、throw ステートメントによってスローされ、catch によってキャプチャされることができます。例外が発生すると、その背後にあるコードは実行を継続できなくなります。

例は次のとおりです:

<?php
    try{
        $err = &#39;抛出异常信息,并跳出 try 语句块&#39;;
        if(is_dir(&#39;./demo&#39;)){
            echo &#39;这里是一些可能会发生异常的代码&#39;;
        }else{
            throw new Exception($err, 20211020);   // 抛出异常
        }
        echo &#39;上面抛出异常的话,这行代码将不会执行,转而执行 catch 中的代码。<br>&#39;;
    }catch(Exception $e){
        echo &#39;捕获异常:&#39;.$e->getMessage().&#39;<br>错误代码:&#39;.$e->getCode().&#39;<br>&#39;;
    }
    echo &#39;继续执行 try catch 语句之外的代码&#39;;
?>
ログイン後にコピー

出力結果:

PHP における例外処理とは何かを 5 分で説明します。

上記の例では、次のようにしてみてください。 try 文で判断 現在のディレクトリに、demo という名前のディレクトリはありますか? ディレクトリが存在しないため、throw キーワードが実行され、例外がスローされます。例外が見つかってスローされた後は、try ステートメントの残りのステートメントは実行されません。

独自の例外クラスを作成する

PHP では、例外クラスをほとんど受け取らないため、事前にいくつかの例外を定義できます。イニシアチブ 例外をスローします。例外が事前に定義されている場合、if-else を使用して例外の可能性を判断し、手動で例外をスローできます。PHP では、自分で作成した例外クラスを使用することがよくあります。

例は次のとおりです。

<?php
class emailException extends Exception{
    function __toString(){
        return "<b>email is null</b>file:".$this->getFile().&#39;,line:&#39;. $this->getLine();
    }
}
class nameException extends Exception{
}
?>
ログイン後にコピー

上の例では、2 つの例外クラスが定義されており、どちらも Exception 基本クラスを継承しています。

実際のビジネスでは、さまざまなニーズに応じてさまざまな例外をスローします。例は次のとおりです:

function reg($reg) {
    if (empty($reg[&#39;email&#39;])) {
        throw new emailException("emaill is null", 1);
    }
    if(empty($reg[&#39;name&#39;])) {
        throw new nameException("name is null", 2);
     }
}
ログイン後にコピー

ビジネス コードを実行するときに、例外がスローされるかどうかを if ステートメントを使用して判断できます。例外が発生した場合は、手動で例外をスローし、ステートメントを通じてさまざまな例外をさまざまな例外クラスに配布します。次の例では、さまざまな状況に応じてさまざまな例外がキャプチャされます。最初のキャッチで例外がキャッチされたとき、他の例外がまだ発生している場合でも、プログラム内に存在する場合、他のキャッチ コード ブロックはスキップされます。プログラムに例外があるかどうかに関係なく、finally 内のステートメントは実行されます。例は次のとおりです。

try{
    $reg = array(&#39;phone&#39;=>&#39;1888888888&#39;);
    reg($reg);
} catch(emailException $e) {
    echo $e;
} catch(nameException $e) {
    echo &#39;error msg:&#39; .$e->getMessage().&#39;error code:&#39;.$e->getCode();
} finally {
    echo &#39; finally&#39;;
}
ログイン後にコピー

PHP について詳しく知りたい場合は、「PHP ビデオ チュートリアル 」をクリックして学習できます。

以上がPHP における例外処理とは何かを 5 分で説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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