PHP 15:例外

WBOY
WBOYオリジナル
2016-06-23 14:35:24978ブラウズ

out_put_fns.php ファイルを読んだ後、db_fns.php ファイルを見てみましょう。コードは次のように非常に単純です:

1 2
3 function db_connect()
4 {
5 $result = new mysqli( ' localhost ' , ' bm_user ' , 'password ' , bookmarks ' );
6 if ( ! $result )
7 throw new Exception ( ' データベースサーバーに接続できませんでした ' );
8 else
9 return $result ;
11
12 ?>データベースに接続し、データベース接続を返します。 7 行目のコードは例外をスローするため、ここではデータベース接続については言及しません。したがって、最初に PHP 例外について説明し、次の章でデータベース操作について具体的に説明します。
PHP の例外メカニズムは Java や他の言語の例外メカニズムと似ています。しかし、まだ違いがあります。

PHP 例外は、try...throw...catch を使用してもキャッチされます。
C#、Java などの一部の言語では、try のコードが自動的に例外をスローすることがありますが、PHP ではこの例外を手動でキャッチする必要があります。他の言語と同様に、PHP もスローする適切な例外を決定します。これが後の catch の役割です。
PHO には例外クラスもあります。まず例を見てみましょう。コードは次のとおりです。


1 2 try
3 {
4 throw new Exception('ここで例外が発生しました!',43);
5 }
6 catch(Exception $ e)
7 {
8 echo 'Exception '.$e->getCode().':'.$e->getMessage().'in'.$e->getFile() .'on line '
9 .$e->getLine().'
';
10
11 }
12 ?>

Exception43 : ここで例外が発生します。 inG : Apache GroupAp ache2 . 2 htdocstest . phpon line4 ここでは、Exception クラスの使用方法を示します。 C# や Java に慣れている方であれば、理解するのは難しくないと思います。
PHP5 は、構築時に 2 つのパラメーターを必要とする Exception クラスを提供します。1 つは例外メッセージ、もう 1 つは例外コードです。

コンストラクターに加えて、以下の関数も含まれています。

getCode() -- コンストラクターに渡されたコードを返します。 getMessage() -- コンストラクターに返されるメッセージ。 getFile() -- 例外を生成したコードのファイルへの完全パスを返します。 getLine() -- 例外コードが発生した行番号を返します。 getTrace() -- 例外を生成したコードとフォールバック パスを返します。これは、ASP.NET ページを作成する場合、例外が発生すると、.net がエラー情報を保存します。ファイルが配置されている場所と、すべてのフォールバック パス情報が提供されます。
getTraceAsString() -- 文字列としてフォーマットされる点を除いて、getTrace() と同じです。 __toString() -- Exception オブジェクトの単純な表示を可能にし、上記のメソッドによって与えられるすべての情報を提供します。 echo $e を呼び出してすべての情報を表示できます。たとえば、上記のコードが次のように呼び出された場合、結果は

例外 ' 例外が発生しました! ' in G: Apache GroupApache2 . php : 4 Stack track : # 0 {main} になります。
他の言語と同様、PHP も Exception クラスをカスタマイズできます。
幸いなことに、PHP には例外コードが用意されています。覗いてみましょう。
1 2 class Exception
3 {
4 protected $message = ' 未知の例外 ' ; // 例外メッセージ
5 protected $code = 0 ; // ユーザー定義の例外コード
6 protected $file ;例外のソースファイル名
7 protected $line ; // 例外のソース行
8
9 function __construct( $message = null , $code = 0 ); // 例外のメッセージ
12 最終関数 getCode(); // 例外のコード
13 最終関数 getFile(); // ソース ファイル名
14 最終関数 getLine(); // ソース行
15 最終関数 getTrace(); backtrace()
16 Final function getTraceAsString(); // フォーマットされたトレースの文字列
17
18 /* オーバーライド可能 */
19 function __toString() // 表示用のフォーマットされた文字列
20 }
21 ?>このクラスを見てみましょう。独自の例外をカスタマイズする場合は、このクラスを継承する必要があります。他のメソッドには Final キーワードがあるため、__toString のみをオーバーライドできるようです。これは、サブクラスがそれをオーバーライドできないことを意味します。次の例を見てください:

1 2 try
3 {
4 throw new user_defined_Exception( ' ここで例外が発生します! ' , 43 );
5 }
6 catch (user_dependent_Exception $e )
7 {
8 echo $e ;
9 // echo '例外 '.$e->getCode().':'.$e->getMessage().'in'.$e->getFile( ) .'オンライン'
10 //.$e->getLine().'
'
11
12 }
13 class user_dependent_Exception extends Exception
14 {
15 public function __toString()
16 「」」」 '''''-'---------------アウトアウトアウトアウトオフアウトオフウェイバック - ' : ' . $this -> getFile() ' ' ;/strong> ' ; 20 }
21 }
22 ?>


例外 43:ここで例外が発生します。 .phpon line4


要約すると、この章では、PHP 例外の特徴と他の言語とのいくつかの違いについて説明しました。最後に、カスタム例外が導入されます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHPクラスの継承次の記事:PHPクラスの継承