2017-01-16 7 views
1

曖昧なタイトルに申し訳ありません。メソッドまたは呼び出し元のメソッドで例外をスローする

私はこのようなシナリオで行うことが最善であるものを疑問に思って:

$template = $loader->load('file'); 

if (!$template) { 
    throw new \Exception('my custom exception'); 
} 

このようにそれを維持、または実際に$loader->loader()方法で例外をスローする方が良いでしょうか?

実際にこの例のように例外が発生した場合は、例外がスローされたメソッドを常にクリックすると思います。したがって、例外がスタックトレースを上回る本当の理由はありません。

これについての考えは?メソッドが実際に例外を実装することができたときに、スタックトレースの上位の例外をキャッチするのはなぜですか?

+1

状況によって異なります。たとえば、ファイルが見つからないという例外がある場合は、loadメソッドの内部にスローされる必要があります。外側の範囲に関係する場合は、外側の範囲などにスローされる必要があります。 –

+0

@ patryk-uszynski真ですが、線はぼやけています。私はそれがいつ「外の範囲にコーナーするか」を意味する。どちらの場合も外側の範囲が関与しているからです。私はこれに明確な答えがないと思います。私は人々の考えが欲しいので、まだ投稿しました。読んでくれてありがとう! –

答えて

-1

私の意見は、契約書またはダイに従う必要があります。 オブジェクトを入力として取得するたびに、オブジェクトがNULLか有効なオブジェクト参照かをチェックする必要があります。チェックを忘れると、NullPointerExceptionは実行時に実行を中断することがあります。したがって、上記で説明したように、あなたのロジックは複数のチェックとif/then/elseフォークで汚染されます。

nullが悪いのはなぜですか?there

関連する問題