ホームページ  >  記事  >  バックエンド開発  >  PHP オブジェクト指向プログラミング (oop) 学習メモ (4) - 例外処理クラス Exception_PHP チュートリアル

PHP オブジェクト指向プログラミング (oop) 学習メモ (4) - 例外処理クラス Exception_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:28:23924ブラウズ

使用例外

PHP5 には、他の言語と同様の例外処理モジュールが追加されています。 PHP コードで生成された例外は、throw ステートメントでスローし、catch ステートメントでキャッチできます。例外処理が必要なコードは、発生する可能性のある例外をキャッチするために try コード ブロックに配置する必要があります。各試行は少なくとも 1 つの catch ブロックに対応します。複数のキャッチを使用して、さまざまなクラスによって生成された例外をキャッチします。 try ブロックが例外をスローしなくなった場合、またはスローされた例外に一致する catch が見つからなかった場合、PHP コードは最後の catch にジャンプした後、実行を継続します。もちろん、PHP では、catch ブロック内で例外を再度スローすることができます。

事前定義された例外 例外

Exception クラスはすべての例外の基本クラスです。Exception クラスを派生することでカスタム例外を派生できます。次のリストは、例外に関する基本情報を示しています。

コードをコピーします コードは次のとおりです:

Exception {
/* 属性*/
protected string $message ; / /例外がスローされたファイル名
protected int $line ;例外がスローされたファイルの行番号
/* Method*/
public __construct ([ string $message = "" [, int $code = 0 [ , Exception $previous = NULL ]]] ) //例外コンストラクター
Final public string getMessage (void) //例外メッセージの内容を取得します
Final public Exception getPrevious (void) //例外チェーン内の前の例外を返します
Final public int getCode (void) //例外コードを取得します
Final public string getFile (void) //例外が発生したプログラムファイル名を取得
final public int getLine(void) //ファイル内の例外コードの行番号を取得
final public array getTrace (void) //例外を取得追跡情報
final public string getTraceAsString (void) //文字列型の例外追跡情報を取得
public string __toString (void) //例外オブジェクトを文字列に変換
final private void __clone (void) //例外的なクローン
}


例外を理解した後、例外クラスを拡張してカスタム例外を実装してみましょう。

コードをコピーします コードは次のとおりです:
function connectToDatabase()
{
if(!$link = mysql_connect("myhost","myuser","mypassw","mybd"))
{
throw new Exception("データベースに接続できませんでした。");
}
}
try
{
connectToDatabase();
}
catch(Exception $e)
{echo $e->getMessage( );
}


ここでは、Exception タイプの例外をスローし、この例外を catch でキャッチし、最後に「データベースに接続できませんでした。」を出力します。データベース接続が失敗した理由に関する情報も表示したい場合があります。次に、例外クラスを拡張してカスタム情報を実装します。

コードをコピーします コードは次のとおりです:

class MyException extends Exception
{
protected $ErrorInfo;
//コンストラクター内でロジックを処理し、基本クラスに情報を渡す
public function __construct($message=null,$code=0)
{
$ this&gt = '間違ったクラスのエラー情報 "" "n} connecttodatabase(){
$ e ) {
Echo $ e-& gt; getMessage ( ) . "n";
echo $e->GetErrorInfo();
}



set_Exception_handler はユーザー定義の例外処理関数を設定します

キャッチされなかった例外が発生したときに set_Exception_handler のパラメータとして呼び出される関数の名前。この関数は、set_Exception_handler() を呼び出す前に定義する必要があります。この関数は、スローされた例外オブジェクトである 1 つのパラメーターを受け入れます。これを使用すると、前述の例外ログの処理を改善できます。




コードをコピーします

コードは次のとおりです:


function ExceptionLogger($Exception)
{
$file='ExceptionLog.log';
file_put_contents($fiel,$Exception->__toString() ,FILE_APPEND);
}
set_Exception_handler(ExceptionLogger);



1.3. PHP では、catch コード ブロック内で例外を再度スローできます。

コードをコピーします

コードは次のとおりです:

try{ #code...}catch(Exception $e)
{
if($e->getCode() = = 999)
{
#いくつかの操作を実行します
}
else

まとめ
例外関数は非常に強力ですが、プロジェクト内で例外メカニズム、特に大量の例外ログを使用するメカニズムをむやみに悪用できるという意味ではありません。これにより、システムのオーバーヘッドが大幅に増加し、パフォーマンスが低下します。応用。エラー コードを使用すると、エラー メッセージを簡単に管理できます。エラー メッセージが複数回スローされる場合、エラー コードを使用するのが科学的な選択です。エラー コードを使用して、エラー メッセージを複数の言語で表示することもできます。

http://www.bkjia.com/PHPjc/788632.htmlwww.bkjia.comtru​​e
http://www.bkjia.com/PHPjc/788632.html

技術記事

例外の使用 PHP5 には、他の言語と同様の例外処理モジュールが追加されています。 PHP コードで生成された例外は、throw ステートメントでスローし、catch ステートメントでキャッチできます。例外処理が必要です...





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