Java 20で地味にURLクラスのコンストラクタが非推奨になっていた。ずっとDTMしていた関係でJavaの話題を追えていなかった。ようは今までは
var url = new URL("https://d-kami.hatenablog.com/feed");
みたいに書いていたのを
var url = new URI("https://d-kami.hatenablog.com/feed").toURL();
と書き直せば非推奨な部分を回避できる。地味にthrowされる例外が違っていてURLのコンストラクタだとjava.net.MalformedURLExceptionが投げられていたが、URIのコンストラクタだとjava.net.URISyntaxExceptionが投げられる。MalformedURLExceptionはIOExceptionを継承しているが、URISyntaxExceptionはExceptionを直接継承していてIOExceptionを経由していないという違いがある。どっちにしろtoURL時にMalformedURLExceptionが投げられるので…
ただし!
URIにはstaticなcreateというメソッドがあり
var url = URI.create("https://d-kami.hatenablog.com/feed").toURL();
と書くことも可能で、この場合はURISyntaxExceptionではなくjava.lang.IllegalArgumentExceptionがthrowされる。IllegalArgumentExceptionはRuntimeExceptionを継承しているのでこっちの方が使い方が若干緩くなる。Javaのソースコード読んでないから何とも言えないけどcreateの中でコンストラクタ呼び出してURISyntaxExceptionがでたらIllegalArgumentExceptionを代わりに投げてるだけかも?そんな気がしているだけです