例外の意味は重要

Androidの開発者がよくするミスのNo.2位に、INTERNETパーミションの付加忘れがある。(No.1はActivity要素の記述漏れに違いない)


上記のパーミションが無いままインターネットにアクセス(IPアドレス取得やDNSアクセスでも発生)することが原因で発生する例外のはずだが、

ERROR/AndroidRuntime(258): Caused by: java.net.UnknownHostException: f.hatena.ne.jp
ERROR/AndroidRuntime(258):     at java.net.InetAddress.lookupHostByName(InetAddress.java:513)
ERROR/AndroidRuntime(258):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:278)
ERROR/AndroidRuntime(258):     at java.net.InetAddress.getAllByName(InetAddress.java:242)
ERROR/AndroidRuntime(258):     at 

どうしてUnknownHostExceptionなんだ? Access deniedとかSecurityExceptionじゃないのが凄く分かり難い。

毎回毎回、ホストが解決できないことを解決するための方策をまずは考える。私が設定した環境がおかしいんだろうか、とか、エミュレータがおかしいんだろうかとか、URLに間違いがあるのではないかとか、一頻り悩み抜いた挙げ句の果てにマニフェストにパーミションを設定していなかったことに気がついて愕然とするのだが、そこまでの時間を無駄にした精神的なダメージが大きい。

無論対策はあるのだが、長くなりそうなので明日にでも。