0

私は各チュートリアルを見回してフォローしてきましたが、目立つものがあります。http://blog.lysender.com/2011/02/kohana-3-1-migration-custom-error-pages/ <-私はこのチュートリアルに従い、すべてがスムーズに進みました

  1. エラーが検出されています
  2. 例外が処理されています

しかし、私が見つけられないように見える例外がありました。現在この例外が発生しています

Fatal error: Exception thrown without a stack frame in Unknown on line 0

私のコードはすべてサイトリンクと同じです。私を助けてください..これまでずっとこれについて悩んでいます、私はここでもコハナ3-404ページにリダイレクトしますが、初心者なので、それを理解するのは本当に難しいです。また、KO 3.0から3.1に大幅な改良が加えられていることもわかりました。KO3.2はどうですか?助けてくれてありがとう:)

4

2 に答える 2

1

コハナのソースコードから。

- > If you receive *Fatal error: Exception thrown without a stack frame in Unknown on line 0*, it means there was an error within your exception handler. If using the example above, be sure *404.php* exists under */application/views/error/*.

多分それは役立ちます。これはおそらく修正されていますが、私はコハナの開発をあまりフォローしていません。これはプルリクエスト#246に関連しています:https ://github.com/kohana/core/pull/246そしてこれはソースです:https ://github.com/kohana/core/pull/246/files#L208L76

于 2012-06-12T10:31:28.523 に答える
1

これがコハナ3.2でのやり方です

  • index.phpに例外を処理するものを追加します
    試す
    {{
        $ request = $ request-> execute();
    }
    catch(Kohana_HTTP_Exception_404 $ e)
    {{
        $ request = Request :: factory('errors / 404')-> execute();
    }
    catch(例外$ e)
    {{
        $ request = Request :: factory('errors / 500')-> execute();
    }

    echo $ request-> send_headers()-> body();
  • 次に、エラーコントローラを記述します
クラスController_ErrorsはControllerを拡張します
{{
    パブリック関数__construct($ request、$ response)
    {{
        親::__construct($ request、$ response);
    }

    パブリック関数action_404()
    {{
        $ this-> response-> body(View :: factory('errors / 404'));
    }

    パブリック関数action_500()
    {{
        $ this-> response-> body(View :: factory('errors / 500'));
    }
}
  • 対応する2つのエラーページを作成します(ビュー/エラーで404.phpと500.php)

  • bootstrap.phpに新しいルートを追加するか、デフォルトのルートを使用します(プロジェクトの構造によって異なります)。例外がスローされたときにController_Errorsに到達できることを確認してください。

  • これで、コントローラーで例外をスローするたびに、次のようなカスタムエラーページが表示されます。
新しいHTTP_Exception_404をスローします。
于 2012-09-08T21:11:06.673 に答える