カテゴリー:
制御構造
閲覧数:750 配信日:2010-05-22 10:16
Exceptionクラス
「Exception」クラス仕様をデバッグ確認
・可視性の関係で、「Exceptionクラス」の派生クラス「MyExceptionクラス」作成
class MyException extends Exception{
function __construct($message = NULL, $code = 0){//②
parent::__construct($message, $code);
$arr["class_vars"] = get_class_vars("Exception");
$arr["class_methods"] = get_class_methods("Exception");
// $arr["object_vars"] = get_object_vars($this);
print_r($arr);
// var_dump($this);
}
}
new MyException("例外を投げまーす。");//①
・結果
Array
(
[class_vars] => Array
(
[message] =>
[code] => 0
[file] =>
[line] =>
[class_methods] => Array
(
[0] => __construct
[1] => getMessage
[2] => getCode
[3] => getFile
[4] => getLine
[5] => getTrace
[6] => getPrevious
[7] => getTraceAsString
[8] => __toString
)
Exceptionクラスメソッド
・例外クラスのメソッド
class Ex1 extends Exception{
public function __construct($mes, $code){//⑥
throw new Exception($mes, $code);//⑦一番最初に実行される(最後に呼ばれた)「例外」が、投げられた位置はココ!
}
}
class AIR{
public function __construct($mes){
$this->air_method($mes);//③function「air_method」呼び出す
}
private function air_method($mes){//④
try{
throw new Ex1($mes, 12345);//⑤function「__construct」呼び出す
}catch(Exception $e){
echo '$e->getMessage();', "\n", $e->getMessage(),"\n\n";//⑧「getMessage()」メソッド -「プロパティ$message」の値 =「例外オブジェクト」生成時に渡されたメッセージ(文字列)
echo '$e->getCode();', "\n", $e->getCode(), "\n\n";//⑨「getCode()」メソッド 「プロパティ$code」の値 = 「例外オブジェクト」生成時に渡された識別コード(整数)
//echo '$e->getFile();', "\n", $e->getFile(), "\n\n";//(省略)/public_html/php.w4c.work/0-PROTOTYPE/exception9_exceptin_method.html 「getFile()」メソッド -「プロパティ$file」の値 =「例外」が投げられたファイルへの絶対パス
echo '$e->getLine();', "\n", $e->getLine(), "\n\n";//「getLine()」メソッド -「プロパティ$line」の値 =「例外」が投げられた位置(行番号)
echo '$e->getTrace();', "\n";
print_r( $e->getTrace() );//「getTrace()」メソッド -「プロパティ$trace」の値(配列)=「例外」が投げられるまでの足跡(昔に逆戻る)を配列で格納
// echo "\n", '$e->getTraceAsString();', "\n",$e->getTraceAsString();
// echo "\n\n", '__toString()', "\n", $e;//__toString()」メソッド -「例外オブジェクト」を文字列として評価した際、「getTraceAsString()」メソッドと似た値を返す = 「Exception」クラス内部で使用する値なので、理解する必要なし
}
}
}
function air_func(){
new AIR(" AIRクラスのインスタンスオブジェクト生成と同時に、コンストラクタが起動される ");//②function「__construct」呼び出す
}
air_func();//①function「air_func」呼び出す
・結果
$e->getMessage();
AIRクラスのインスタンスオブジェクト生成と同時に、コンストラクタが起動される
$e->getCode();
12345
$e->getLine();
15
$e->getTrace();
Array
(
[0] => Array
(
[file] => /var/www/php.w4c.work/public_html/0-PROTOTYPE/exception9_exceptin_method.html
[line] => 25
[function] => __construct
[class] => Ex1
[type] => ->
[args] => Array
(
[0] => AIRクラスのインスタンスオブジェクト生成と同時に、コンストラクタが起動される
[1] => 12345
[1] => Array
(
[file] => /var/www/php.w4c.work/public_html/0-PROTOTYPE/exception9_exceptin_method.html
[line] => 21
[function] => air_method
[class] => AIR
[type] => ->
[args] => Array
(
[0] => AIRクラスのインスタンスオブジェクト生成と同時に、コンストラクタが起動される
[2] => Array
(
[file] => /var/www/php.w4c.work/public_html/0-PROTOTYPE/exception9_exceptin_method.html
[line] => 40
[function] => __construct
[class] => AIR
[type] => ->
[args] => Array
(
[0] => AIRクラスのインスタンスオブジェクト生成と同時に、コンストラクタが起動される
[3] => Array
(
[file] => /var/www/php.w4c.work/public_html/0-PROTOTYPE/exception9_exceptin_method.html
[line] => 44
[function] => air_func
[args] => Array
(
)