Никогда не говори никогда;)
В приведенном выше примере вы всегда можете перехватить исключение и затем создать исключение RuntimeException:
public void myMethod() {
try {
...
String encodedString = URLEncoder.encode(foo, "utf-8");
...
} catch(UnsupportedEncodingException e) {
throw new RuntimeException("This should not be possible",e);
}
}
Таким образом, вызывающему абоненту не обязательно поймать что-то, что, как вы уверены, на 99,999% никогда не случится, но в сумасшедшем случае, когда это случится, вы все равно получите пузырек исключения до такой степени, что вы, надеюсь, заметите это и будете возможность быстро понять, что изменилось, и исправить это.
НТН