ただしキャッチの話じゃなくてthrowの方です。例外を投げるライブラリを使うと、catchしないといけません。ずっと「勝手に例外を放り投げるなよ」と思ってたのは秘密です。
◆そうじゃなくて、自作ライブラリで例外を投げることにしました。
こうなると、今後全てのコードで例外対応する必要があるわけですね。
大変だ。
さて、例外を使うと決めたのはいいのですが、いざ投げようとすると疑問が。
何を投げればいいんだ?
メッセージはどうする?
下の方のライブラリのエラーメッセージなんか表示してもねぇ・・・
◆で、調べたところ、例外はネストして使うと便利なようです。
たとえば「ABC」なるライブラリがあったとして、このライブラリが投げる例外をこうやって定義します。
class AbcException extends Exception {}; class NotBadAbcException extends AbcException {}; class WrongAbcException extends AbcException {};
こう書くと、どういうメリットがあるのでしょう?
こんなcatchの仕方が出来ます。
try { abc::do_something_wrong(); } catch( NotBadAbcException $e ) { // 何かエラー処理 } catch( AbcException $e ) { // その他のエラー処理 } catch( Exception $e ) { // わけの分からないエラー処理 }
つまり例外のクラスを見るだけ何が起きたかが分かります。
つまりメッセージは読まなくてもいいのです。多分。
さらにライブラリの例外をまとめてキャッチしたりと、様々なケースにも対応可能。
エラーコード?そんなもの知らん。
またエラーの種類が分かるので、キャッチした側でメッセージを作ってしまえば、大体大丈夫みたいです。今のところ。
続き:「PHP:例外をメッセンジャーとして使って みる」
0 件のコメント:
コメントを投稿