import java.net.URL
import java.net.URI
// 末尾スペース入りの間違ったURL
val url = new URL("http://example.com ")
とするとjava.net.MalformedURLExceptionが投げられると期待していたが投げられない。
java.net.URLはURLに含まれてはいけないいくつかの特殊文字が含まれている場合に、
例外を投げずにスルーしてしまう。
代わりに
val uri = new URI("http://example.com ")
とするとjava.lang.IllegalArgumentExceptionが投げられる。
じゃあURIならいいのかって言うと・・
val uri = new URI("http:./hoge")
みたいなありえないドメインに属するURLでも例外が投げられない。
ここで
uri.getHost()
とするとnullが返る。
結局、URLにせよ、URIにせよ、インスタンスの作成に成功しても中身が正しいとは限らない。
org.apache.commons.validator.UrlValidator
みたいにURL文字列を正規表現でvalidateしないとダメですね。
※11/2追記