ホームページ  >  記事  >  バックエンド開発  >  PHPでエラーと例外を処理する方法

PHPでエラーと例外を処理する方法

青灯夜游
青灯夜游オリジナル
2021-09-06 10:55:383675ブラウズ

PHP では、例外処理クラス「Exception」のさまざまな組み込みメンバー関数を使用して、例外データを取得および返すことができます。たとえば、getMessage() 関数は例外メッセージの内容を返すことができます。また、「try catch」ステートメントと「throw」キーワードを使用して、プログラム内の例外をキャッチします。

PHPでエラーと例外を処理する方法

#このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

PHP の例外処理クラス

PHP には、組み込み例外処理クラス Exception が用意されています。このクラスでよく使用されるメンバー関数は次のとおりです:

  • getMessage(): Return例外メッセージの内容;

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

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

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

  • getTrace(): backtrace() を返しますarray;

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

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

次のコードは、Exception クラスの完全なコードです。このクラスの定義から、ユーザー内でどのプロパティとメソッド (メンバー関数) にアクセスして継承できるかがわかります。派生サブクラス。

Exception {
    /* 属性 */
    protected string $message ;
    protected int $code ;
    protected string $file ;
    protected int $line ;
    /* 方法 */
    public __construct ([ string $message = "" [, int $code = 0 [, Throwable $previous = NULL ]]] )
    final public getMessage ( void ) : string
    final public getPrevious ( void ) : Throwable
    final public getCode ( void ) : int
    final public getFile ( void ) : string
    final public getLine ( void ) : int
    final public getTrace ( void ) : array
    final public getTraceAsString ( void ) : string
    public __toString ( void ) : string
    final private __clone ( void ) : void
}

プログラムでの例外のキャッチ

PHP では、プログラムで例外をキャッチしたい場合は、try catch ステートメントと throw キーワードを使用して、それを達成します。 try catch ステートメントはフロー制御ステートメントに似ているため、try catch ステートメントを使用して代替の条件付き選択構造を実装でき、throw キーワードは例外をスローできます。 try catch ステートメントの構文形式は次のとおりです。

try{
    // 可能出现异常或错误的代码,比如文件操作、数据库操作等
}catch(Exception $e){    // $e 为一个异常类的对象
    // 输出错误信息
}

例外処理を必要とするコードは、考えられる例外をキャッチするために try コード ブロックに配置する必要があります。すべてのトライには少なくとも 1 つの対応するキャッチが必要です。複数のキャッチを使用して、さまざまなクラスによって生成された例外をキャッチします。

try コード ブロックが例外をスローしなくなった場合、またはスローされた例外に一致するキャッチが見つからない場合、PHP コードは最後のキャッチにジャンプした後、実行を続行します。

PHP コードで生成された例外は、throw ステートメントによってスローされ、catch ステートメントによってキャッチできます。もちろん、PHP では、catch ブロック内で例外を再度スローすることができます。

例外がスローされると、後続のコードは実行を続行せず、PHP は最初に一致するキャッチを引き続き見つけようとします。例外がキャッチされず、 set_Exception_handler() を使用して適切に処理されない場合、重大なエラーが生成され、UncaughtException... メッセージが出力されます。

[例] プログラム内の例外をキャッチするには、try catch と throw を使用します。

<?php
    try{
        $err = &#39;抛出异常信息,并跳出 try 语句块&#39;;
        if(is_dir(&#39;./test&#39;)){
            echo &#39;这里是一些可能会发生异常的代码&#39;;
        }else{
            throw new Exception($err, 12345);   // 抛出异常
        }
        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;;
?>

実行結果は次のとおりです:

捕获异常:抛出异常信息,并跳出 try 语句块
错误代码:12345
继续执行 try catch 语句之外的代码

サンプル コードの try ステートメント ブロックで、現在のディレクトリに test という名前のディレクトリがあるかどうかを確認します。が存在しない場合は、7 行目のコードが実行され、throw キーワードを使用して例外がスローされます。この例外は、new キーワードによって生成された Exception クラスのオブジェクトであり、オブジェクトはエラー メッセージ $err とエラー コード 12345 で初期化されるため、後で例外がキャッチされたときにこの情報を取得できます (コード)。

例外がスローされると、try ステートメント ブロック内の残りのコードは実行を継続できなくなります。プログラム フローは、対応する catch ステートメント ブロックに転送されて実行され、最後にエラー情報とコードが表示されます。 Exception オブジェクトを通じてそのメンバー関数を呼び出すことによって出力されます。

推奨学習: 「

PHP ビデオ チュートリアル

以上がPHPでエラーと例外を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。