質問: ↓のような処理では「エラーが発生しない処理」もtry-catchを囲むべきでしょうか? エラーが発生しない処理の長さも勘案して決めるものなのでしょうか? お手数をおかけしますが、教えて頂けると幸いです。 今回は実行不可能系のエラーは無視して考えています。 よろしくお願いします。 ``` /* エラーが発生するかもしれない処理1 */ /* エラーが発生しない処理 */ /* エラーが発生するかもしれない処理2 */ ``` 1.エラーが発生しない処理もtry-catchに囲む ``` try { /* エラーが発生するかもしれない処理1 */ /* エラーが発生しない処理 */ /* エラーが発生するかもしれない処理2 */ } catch (Exception1 $e){ } catch (Exception2 $e){ } ``` 2.エラーが発生しない処理はtry-catchに囲まない ``` try { /* エラーが発生するかもしれない処理1 */ } catch (Exception1 $e){ } /* エラーが発生しない処理 */ try { /* エラーが発生するかもしれない処理2 */ } catch (Exception2 $e){ } ```
回答: いわゆる「予期せぬエラー」の扱いをどうするか?という設計の話だと思いますが必要に応じて選ぶ形になります。 パターン1 ===== プログラミン時に想定出来ないエラーが発生した場合はコンソールにスタックトレースを表示しプログラムは終了する。この場合は、catch しないようにすれば良いです。 パターン2 ===== プログラミン時に想定出来ないエラーが発生した場合は、一定のエラー処理を行う。 この場合は、どこかでCatch出来るようにしてエラー処理を実行して下さい。 どこでCatchすべきかはプログラムの内容次第で例えばコンソールアプリケーションでMain()でCatchすれば良いのであればMain()に書きます。 個人的には、ちょっとしたプログラムであれば「パターン1」、ある程度の規模以上であれば、「パターン2」で、ログ出力、セッションのクローズなどの後始末をエラー処理に書くかなと思います。