但是我不想用 try/catch 块来包围语句!

2022-09-02 09:34:25

我正在编写一个使用.显然,这种方法可能会抛出一个,我得到。但我只是将“UTF-8”作为编码。它不会引发该异常。java.net.URLDecoder.decode(String value, String encoding)UnsupportedEncodingException

我可以用一个什么都不做的捕获块包围这个的东西,但是无论什么怪异的情况确实导致异常被抛出,我都不会发现它。我也不想创建一个大的链条,直到我的程序的顶部。throws UnsupportedEncodingException

我能在这里做什么?为什么我被迫处理一些异常,而其他异常(例如,)我被允许忽略?IllegalArgumentExceptionNullPointerException


答案 1

我认为您需要更好地掌握已检查的异常及其一般目的,但这是另一个问题和答案。在这种情况下,您要做的是:

 try {
      //etc.
 } catch (UnsupportedEncodingException e) {
      throw new RuntimeException(e.getMessage(), e);
 }

答案 2

有两种类型的异常。

  • CheckedException:它让你强制使用 try-catch 或 throw 到程序的顶部。
  • 未选中异常:您可以绕过。它只会在运行时引发

我只是接受这样一个事实,即Java设计这种方式是为了使程序不那么容易出错。