【问题标题】:Handling RuntimeExceptions in Java [closed]在 Java 中处理 RuntimeExceptions [关闭]
【发布时间】:2011-01-02 23:27:55
【问题描述】:

谁能解释如何在 Java 中处理运行时异常?

【问题讨论】:

  • 我认为不接受 SO 的人现在已经发现这些都是空洞的威胁。我们想要模组点数!
  • 我从未在任何地方看到接受按钮?
  • 答案旁边的大勾号/更正标记。
  • 很遗憾,但我的印象是,对愚蠢问题的明显 30 秒回答通常比对更有趣问题的精心编写的答案给予更多的奖励积分。对于观看率高的问题,第一个回答即使与问题完全无关,通常也会获得很多奖励积分。
  • 对不起,我找不到任何地方。

标签: java exception-handling runtimeexception


【解决方案1】:

它与处理常规异常没有区别:

try {
   someMethodThatThrowsRuntimeException();
} catch (RuntimeException ex) {
   // do something with the runtime exception
}

【讨论】:

  • 可以捕获运行时异常..?
  • 当然! Throwable 的所有子类都可以被捕获。
  • 我没有看到这个问题的问题 - 我有一个 Runnable,我怀疑它会导致运行时错误,我不知道您可以将任何代码包装在 try/catch 中并添加RunTimeException 捕获。我用谷歌搜索了“Android 处理运行时异常”,这是出现的第一个问题,这个答案提供了我需要的东西。当然,这正是 SO 应该如何工作的?
【解决方案2】:

如果您知道可能抛出的异常类型,则可以显式捕获它。您也可以捕获Exception,但这通常被认为是非常糟糕的做法,因为您会以同样的方式处理所有类型的异常。

通常,RuntimeException 的意义在于您无法优雅地处理它,并且它们不会在您的程序正常执行期间被抛出。

【讨论】:

  • 除非自定义组件抛出 RuntimeException,因为它无法通过网络到达某个主机,这会导致您的 Android 应用程序崩溃。
【解决方案3】:

您只需捕获它们,就像任何其他异常一样。

try {
   somethingThrowingARuntimeException()
}
catch (RuntimeException re) {
  // Do something with it. At least log it.
}

【讨论】:

    【解决方案4】:

    不确定您是否在 Java 中直接引用 RuntimeException,所以我假设您在谈论运行时异常。

    Java 中异常处理的基本思想是,您将期望可能引发异常的代码封装在特殊语句中,如下所示。

    try {
       // Do something here
    }
    

    然后,您处理异常。

    catch (Exception e) {
       // Do something to gracefully fail
    }
    

    如果无论是否引发异常都需要执行某些操作,请添加finally

    finally {
       // Clean up operation
    }
    

    整体看起来像这样。

    try {
       // Do something here
    }
    catch (AnotherException ex) {
    }
    catch (Exception e) {  //Exception class should be at the end of catch hierarchy.
    }
    finally {
    }
    

    【讨论】:

    • 我们可以捕获运行时异常吗?怎么可能?在不知道运行时异常的情况下,我们如何以编程方式捕获它?
    • 您可以使用catch (ExceptionType name) {} 捕获任何类型的异常。否则,您可以使用catch {} 捕获所有异常,或使用catch (Exception name) {} 捕获所有异常(并让您可以访问有关它们的信息。
    • @Ed:这是正确的。但是如果我在服务器上遇到错误(加载问题)。这是运行时异常。我们将如何以编程方式捕获此异常?有可能吗?
    • 我不明白你的意思......你使用我给你的语法以编程方式捕获异常。
    猜你喜欢
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    相关资源
    最近更新 更多