3

私は最近、この質問で最近最もよく説明されているように、例外や例外の処理などについて質問しています。私の質問は今、どのように使用するかです

set_exception_handler();

phpでエラー処理クラスを設定するクラスで、エラーがスローされるたびにこのクラスによって処理されます。定義が述べているように:

例外が try/catch ブロック内でキャッチされない場合、デフォルトの例外ハンドラーを設定します。exception_handler が呼び出された後、実行は停止します。

私は次のようなことができると思っていました:

class Test{
    public function __construct(){
        set_exception_handler('exception');
    }

    public function exception($exception){
        echo $exception->getMessage();
    }
}

しかし、問題は、ユーザーがアプリケーションをセットアップしたり、アプリケーションから API を使用したりする場合、次のことをすべて行う必要があることです。new Test();

では、次のような例外ハンドラ クラスを作成するにはどうすればよいでしょうか。

  1. 「キャッチされていない」例外を処理するために、例外がスローされたときに自動的に呼び出されます。
  2. 拡張可能な OOP 方式で行われます。

私が示した方法は、私が考えることができる唯一の方法です。

4

2 に答える 2

9

クラスが機能するには、コンストラクター内の行が次のようになっている必要があります。

// if you want a normal method        
set_exception_handler(array($this, 'exception'));

// if you want a static method (add "static" to your handler method
set_exception_handler(array('Test', 'exception'));
于 2013-02-19T05:18:36.017 に答える
9

set_exception_handler を使用すると PHP ですべてのエラーがキャッチされると誰もが考えていますが、一部のエラーは set_exception_handler によって処理されないため、すべての種類のエラーを処理する適切な方法は次のように実行する必要があります。

 //Setting for the PHP Error Handler
 set_error_handler( call_back function or class );

 //Setting for the PHP Exceptions Error Handler
 set_exception_handler(call_back function or class);

 //Setting for the PHP Fatal Error
 register_shutdown_function(call_back function or class);

この 3 つの設定を行うことで、PHP のすべてのエラーをキャッチできます。

于 2013-02-19T05:37:16.847 に答える