2011-12-11 9 views
-4

は、私はPHPの例外をラップ抽象クラスを持っている:PHP例外カスタムメッセージ

abstract class MyException extends Exception 
{ 

    public function __construct($message, $code = 0, Exception $previous = null) 
    { 
     parent::__construct($message, (int) $code, $previous); 
    } 
} 

その後、私はのような他のクラスがあります:throw new UserException('User does not exist');

それをやってエラーをスローしようとすると

class UserException extends MyException 
{ 
    public function __toString() 
    { 
     return parent::getMessage(); 
    } 
} 

を私が定義したメッセージだけを表示するだけではありません。それは示しています

私は、「致命的なエラー:キャッチされない...」を取り除くにはどうすればよい

Fatal error: Uncaught User does not exist thrown in \path\ClassTest.php on line 69

部分?

ありがとうございます。

EDITは:

私がキャッチされない例外を上書きしますset_exception_handler()を使用して、答えを見つけました。そして、コールバック関数を提供することを許可する

+0

投稿したコードはほとんど無関係です。あなたは試してキャッチすることを含めていますか?もっと読む[ここ](http://www.w3schools.com/php/php_exception.asp)また、Googleのエラーメッセージ。 – Griffin

+1

あなたはそれを必要とする部分の周りに試着していますか? – craniumonempty

+0

あなたは_throwing_で、_catching_ではないので、_uncaught _...です。 – Xaerxess

答えて

0

"致命的なエラー"部分は、try-catchステートメントの外側に例外がスローされ、最後にPHPエラーハンドラによって捕捉されるため生成されます。キャッチされない例外は常に致命的です。 - >Linky

try{ 
    $foo->bar(); 
catch(UserException $ex){ 
    // Do something with the exception. 
} 

代わりにあなたが作ることができ、独自のエラーハンドラ:同様のtry-catch文で例外を生成するコードを囲む

してみてください。

しかし、try-catchのアプローチは「正しい」方法です。