私は例外を処理しますJavascriptのeventHandlingと似ています。 イベントは、ラダーを特定のものから汎用のものにバブルアップします。それが開始プログラムに到達すると、例外はすべてコードの意味を失い、ロギングとアプリケーションの終了のために単に捕捉されるべきです。多くのものが起こることができる一方で
コールスタック:
- スタートランチ
- アップルを食べるに
- シンク歯を(このコードの前に、Appleは昼食として購入されました)リンゴ
リンゴを食べているうちにワームが現れました:
throw NausiaException('I found a bleeding worm...');
アップルのスコープを食べるそのスコープに我々はマネージャでストアと叫びにリンゴを返すことができるので、
catch(Exception $e)
例外をキャッチします。より多くの有用性が出現について述べることができるので、リンゴを食べることが失敗したので、何も役に立たないことは、
throw $e
と呼ばれます。
何かが店長を返金することを拒否した場合、あなたは
throw new RefundFailedException('The manager is a cheap skate', RefundFailedException::REFUSED, $e)
スタート昼食範囲 スタート弁当スコープが離れて悪い昼食をスローしたい例外をラップすることができ、 しかし異なってしまっていたかもしれません
try {
//Start lunch
} catch (Exception $e) {
switch (true) {
case $e instanceof NausiaException:
case $e instanceof RefundFailedException:
//Throw lunch away
break;
}
}
ポイントは、内側のものを実行した後でコントロールを外側の 'catch'に転送することです。 'return'はそれを完全にスキップします。 – cHao