在 Java 中处理 RuntimeExceptions [关闭]

Posted

技术标签:

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

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

【问题讨论】:

我认为不接受 SO 的人现在已经发现这些都是空洞的威胁。我们想要模组点数! 我从未在任何地方看到接受按钮? 答案旁边的大勾号/更正标记。 很遗憾,但我的印象是,对愚蠢问题的明显 30 秒回答通常比对更有趣问题的精心编写的答案给予更多的奖励积分。对于观看率高的问题,第一个回答即使与问题完全无关,通常也会获得很多奖励积分。 对不起,我找不到任何地方。 【参考方案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:这是正确的。但是如果我在服务器上遇到错误(加载问题)。这是运行时异常。我们将如何以编程方式捕获此异常?有可能吗? 我不明白你的意思......你使用我给你的语法以编程方式捕获异常。

以上是关于在 Java 中处理 RuntimeExceptions [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

异常~异常用的大多是处理异常,我一般是写自定义异常

Java异常之checked与unchecked

使用 log4j 在 Java 中记录运行时异常

Lottie Android Studio 错误 Appcompat

本机库 lz4 不适用于 Spark

hadoop2.4 支持snappy