[symfony][doctrine]symfonyの例外について
きっと誰かがトラックバックでフォローしてくれるに違いない。
PHPの例外 - 個々一番のHTTP通信
というわけでsymfony 1.2の例外についてちょっと書いてみます。
先に言っておくと、sfException以外にもただのExceptionだったりLogicExceptionだったりInvalidArgumentExceptionだったりもsymfonyは投げます。いくつかクラスと、例外を投げる状況をみてみます。
sfForm
フォームフレームワークの基底にあるクラスです。
- LogicException
- BoundなフォームをembedFormしようとした場合。
- InvalidArgumentException
- 存在しないWidgetやValidatorを取得しようとした場合。
sfValidatorFile
ファイルのバリデーションとアップロードを行うクラスです。
sfObjectRoute
モデルと関連づいたルーティングを指定するためのクラスです。
- InvalidArgumentException
- 初期化に必要なパラメータが指定されていない場合。
- LogicException
- オブジェクトを取得しようとした際にアクセスされたURIの情報がbindされていない場合。
- ルーティングのタイプと関連のないメソッドが呼び出されようとした場合。
symfonyでは、symfonyの設定などに関わってくるような問題はsfExceptionを継承した例外を投げますが、ユーザの不備によるものについてはそうでない例外も投げます。特にLogicExceptionとInvalidArgumentExceptionはよく見かけます。
ちなみにDoctrineはどうかというと、こいつに関してはみている限りだとほぼDoctrine_Exceptionを継承した例外を投げるようになっています。sfDoctrinePluginはsymfonyの管轄ですのでsfFormDoctrineがファイルでない項目を保存しようとした際にLogicExceptionを投げたりしています。
というわけでsymfonyの例外について少し書いてみました。ポリシーとかはよくわかりません。知ってたら教えてください。