プロが教えるわが家の防犯対策術!

親クラスで、子クラスで実装されたメソッドのExceptionをキャッチしたいのですが、
うまくいきません。

何か良い方法はないでしょうか?

abstract class A {
public __construct(){
try{
$this->testA();
}catch(Exception $e){
var_dump(1);
}
}

abstract function testA();
}

class B extends A {
function testA(){
throw Exception('test',1);
}
}

try{
new B;
}catch(Exception $e){
var_dump(2);// こっちが動く
}

よろしくお願いします。

A 回答 (1件)

細々とSyntax Errorが出るのはコピペミスでしょうか。


私の所で動かすと int(1) と出力されるので class A の中でキャッチ出来てるようですが。
以下、Syntax Error修正ソースです。

abstract class A {
public function __construct() {
try{
$this->testA();
}catch(Exception $e){
var_dump(1);// こっちが動いた
}
}
abstract function testA();
}

class B extends A {
function testA(){
throw new Exception('test',1);
}
}

try{
new B;
}catch(Exception $e){
var_dump(2);
}
    • good
    • 0
この回答へのお礼

ありがとうございます。
実際は結構長いソースでしたので、大まかな枠組みだけを記述していました。
書いたソースにはnew が抜けていましたね。
あと、、、散々ハマった結果、ソースを見直した所
abstract class A {
public function __construct(){
try{
$this->testA();
}catch( Exceotion $e ){ // ← ここがこんな風にスペルミスしてました。
}
}
}

お恥ずかしい質問をしてしまいました。。。

お礼日時:2012/01/23 18:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!