<?php
/**
* ■PHP5における例外処理
*
* PHP 5 では、他の言語と同様の例外処理モジュールが追加されています。 PHP コードで生成された例外はスローされる可能性があります
* ステートメントがスローされ、catch ステートメントによってキャッチされます。例外処理を必要とするコードは、try コード ブロック内に配置して
する必要があります。
* 考えられる例外をキャッチします。すべてのトライには少なくとも 1 つの対応するキャッチが必要です。複数のキャッチを使用する
* 異なるクラスによって生成された例外をキャッチできます。 try コード ブロックが例外をスローしなくなった場合、または一致する catch が見つからなかった場合
* 例外がスローされると、PHP コードは最後のキャッチにジャンプした後、実行を継続します。もちろんPHP
* catch ブロック内で例外を再度スローできるようにします。
* 例外がスローされると、後続のコードは続行されません
* が実行され、PHP は最初に一致するキャッチを見つけようとします。例外がキャッチされず、
* 対応する処理に set_Exception_handler() を使用する必要がない場合、PHP は
を生成します
※重大なエラーとなり、プロンプトメッセージUncaught Exception...(キャッチされない例外)が出力されます。
*/
?>
<?php
/**
* Exception.php
*
* ■㈡PHP5の組み込み例外クラスの属性とメソッド
* 以下のコードは、組み込みの例外処理クラスの構造を説明するためのものであり、実際に使用できるコードではありません。
*/
クラス例外{
protected $message = '不明な例外' // 例外メッセージ
;
protected $code = 0 // ユーザー定義の例外コード
;
protected $file; // 例外が発生したファイル名
protected $line; // 例外が発生したコード行番号
関数 __construct($message = null, $code = 0);
最終関数 getMessage(); // 例外メッセージを返す
Final function getCode(); // 例外コード(コード名)を返す
Final function getFile(); // 例外が発生したファイル名を返します
Final function getLine(); // 例外が発生したコード行番号を返します
最終関数 getTrace() // backtrace() 配列
Final function getTraceAsString(); // 文字列にフォーマットされた getTrace() 情報
オーバーロード可能なメソッド
function __toString(); // 出力可能な文字列
}
?>
<?php
/**
* 構文 .php
*/
//■㈢文法構造と分析
//PHP には次の 2 つの例外スロー形式があります
//【1】試して...捕まえて...
{
を試してください
//データベースエラーやファイルエラーなどの異常な操作を実行します
}キャッチ (例外 $e){
//エラーメッセージを出力します
}
$message='I は try{} ブロックで実行する必要があります。例外が発生した場合、I ($message) は上記の $e などの catch() の例外オブジェクトのインスタンスに返されます (渡されます)。
$code=123; //エラー コード番号。catch ブロックで $e->getCode(); を使用すると、エラー コード番号をカスタマイズできます
新しい例外をスローします($message,$code)
//JAVA を学習する際は、PHP の例外処理にはスローがないことに注意してください
?>
<?php
/**
* Example.php
*/
//■㈣PHP 例外処理をマスターするための 2 つの例
//例 [1] try...catch を使用します
/* PDO は mysql データベースに接続します。PDO をまだ見ていない場合は、まず PDO のコンストラクターを参照するか、例 1 をスキップして例 2 を参照してください */
$dsn = 'mysql:host=localhost;dbname=testdb';
$user = 'dbuser';
$パスワード = 'dbpass';
{
を試してください
$dbh = new PDO($dsn, $user, $password); //データベース接続オブジェクトの作成では例外が発生する傾向があります
echo '上記の例外がある場合は表示されません';
} キャッチ (PDOException $e) {
echo '接続に失敗しました: ' $e->__toString();
}
?>
<?php
//例[2] try..cathcとthrowを併用しています
{
を試してください
$error = '例外メッセージをスローし、try ブロックから飛び出しました';
if(is_dir('./tests')){
echo 'do sth.';
}その他{
新しい例外をスローします($error,12345);
}
echo '上記に例外がある場合は、私の番ではありません! ~<br />',"n";
} catch (例外 $e) {
echo '例外をキャッチ: ', $e->getMessage(),$e->getCode(), "n<br />" //$error と 123456 を表示します
;
}
echo '実行を継続'
?>
<?php
//JAVA には例外クラスやスローなどが多すぎるため、PHP の処理は JAVA よりもはるかに簡単に学習できます
?>