#このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューターPHP では、例外処理クラス「Exception」のさまざまな組み込みメンバー関数を使用して、例外データを取得および返すことができます。たとえば、getMessage() 関数は例外メッセージの内容を返すことができます。また、「try catch」ステートメントと「throw」キーワードを使用して、プログラム内の例外をキャッチします。
PHP の例外処理クラス
PHP には、組み込み例外処理クラス 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 = '抛出异常信息,并跳出 try 语句块'; if(is_dir('./test')){ echo '这里是一些可能会发生异常的代码'; }else{ throw new Exception($err, 12345); // 抛出异常 } echo '上面抛出异常的话,这行代码将不会执行,转而执行 catch 中的代码。<br>'; }catch(Exception $e){ echo '捕获异常:'.$e->getMessage().'<br>错误代码:'.$e->getCode().'<br>'; } echo '继续执行 try catch 语句之外的代码'; ?>実行結果は次のとおりです:
捕获异常:抛出异常信息,并跳出 try 语句块 错误代码:12345 继续执行 try catch 语句之外的代码サンプル コードの try ステートメント ブロックで、現在のディレクトリに test という名前のディレクトリがあるかどうかを確認します。が存在しない場合は、7 行目のコードが実行され、throw キーワードを使用して例外がスローされます。この例外は、new キーワードによって生成された Exception クラスのオブジェクトであり、オブジェクトはエラー メッセージ $err とエラー コード 12345 で初期化されるため、後で例外がキャッチされたときにこの情報を取得できます (コード)。 例外がスローされると、try ステートメント ブロック内の残りのコードは実行を継続できなくなります。プログラム フローは、対応する catch ステートメント ブロックに転送されて実行され、最後にエラー情報とコードが表示されます。 Exception オブジェクトを通じてそのメンバー関数を呼び出すことによって出力されます。 推奨学習: 「
PHP ビデオ チュートリアル 」
以上がPHPでエラーと例外を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。