PhpStorm 2016.3 の例外インスペクションどうしたらいい?
こんな記事を書いたんですが、正直、PhpStorm で RuntimeException の後処理がうまく表現できなくて困っています。
Runtime も含んでどんな例外でもそのままスローだと @throws \Exception
が必要って言われる。主語がでかすぎてやだ。
java.lang.Exception でキャッチしたブロックの中からそれそのまま throw したときって、throws Exception 付くっけ?
— 田中ひさてる (@tanakahisateru) 2016年12月6日
Java は構文的に、例外の捕捉忘れがないことが明確にわかるので、この catch には RuntimeException レベルのものしか来ないはずってことがハッキリわかる。なので同じことやっても throws Exception が必要とは言われない。
いろふさん thanks
横流しするだけなのに throw と書くからそこに反応するの? ってことで、try-finally で書いてみた。そしたら今度は到達しない行があることを認識してくれない。これバグ?
どうも try-catch の構文があってようやく大域脱出があることを認識してくれる。けど IDE が未成熟なせいで回避するために実効力のあるコードに余計なものが入るのはいや。(doc コメントならしかたないけど)
究極的にはこれが正解? しんどい。
phpdoc が @ throws \Exception になるのがそもそもおかしくて、Runtime以前に捕捉しないとダメな例外をキャッチしてないというLogicExceptionを出す https://t.co/s7M6a37HBV
— 田中ひさてる (@tanakahisateru) 2016年12月6日
うーん、せっかくあるこれオフにするか、それとも...
ちゃうねん、Exception 型の throw は RuntimeException | LogicException を意図した可能性があるから 単に無視して欲しい。@throws \Exception
なんて書いても、PHP だと誰も幸せにならないから。
うーん... https://youtrack.jetbrains.com/issues/WI?q=throws%20%23Bug
まあ、アプリケーションレベルでは RuntimeException まわりのややこしい問題扱う時点で負けで、それは横断的な関心として分離するのが正解なんで、今のややこしい状況は逆に関心分離のチャンスかもですけどね。