java - 如何查看给定方法中抛出的运行时异常?

标签 java eclipse exception try-catch

我有一个调用其他几个方法的方法。然而,这些方法和其他操作(例如导航数组或使用空指针)可能会引发不显式的运行时异常。

可以使用 try{...}catch(Exception e){...} block 来确保没有野异常跨越障碍,并且我的方法不会抛出任何异常未在其签名中显式声明的异常。

但是,这个解决方案很丑陋并且容易出现错误,因为我可能不想捕获所有内容,或者我可能想在特定的错误情况下提供一些特定的行为。

那么,Eclipse 有没有办法向我展示类似 的内容“小心,你的方法说它会抛出 IllegalArgumentException 和 JSONException,但是你缺少一些可以在内部捕获或声明抛出它们的运行时异常以及”?到目前为止,Eclipse 只向我显示了我确实必须在方法签名中声明的异常,但我也想被迫声明(未经检查的)运行时异常。

PS:这不是 How can I know what exceptions can be thrown from a method? 的重复项因为最好的解决方案是使用一个包罗万象的 block 。

最佳答案

简短的回答是:你不能。

这就是 RuntimeException 的本质;它们不是“受检查”的异常;因此,您不必将它们添加到您的 throws 子句中。

重要的是,在某种程度上,您的代码了解可能会发生 RuntimeExceptions;并以正确的方式处理它们。

示例:假设您正在开发“提供者”,该“提供者”应该处理来自 Restful API 的请求。

现在有两类问题:

A) 那些您“期望”并且您提供细粒度反馈的内容。例如,您的 API 规范可能会列出许多 400.xxx、409.xxx... 各种问题的答案。对这些事情使用“检查”异常是有意义的(抛出“ApiException”的代码已经知道这个错误应该向restful API的用户显示为409.xxx)。

B) 还有一些你“意想不到”的;基本上这些反射(reflect)了代码中的“错误”;就像“他,这个论点不应该为空”; “他,这个‘ key ’是未知的”。对于那些......只需抛出 RuntimeExceptions 即可。 但是请确保您的顶层能够捕获它们;例如,将它们转换为用户的 500.xxx 答案(“发生了一些内部错误,这是堆栈跟踪;向我们发送错误报告)

关于java - 如何查看给定方法中抛出的运行时异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30486318/

相关文章:

java - Tomcat 向后兼容吗?

java - Maven 和引用库

python - 如何捕获作为参数传递给另一个函数的函数的异常

JAVA 数组异常

Java:当 super 的参数是可变参数时,如何要求子类调用 super()

java - RMI 服务器接口(interface)(调度程序)方法抛出 java.lang.NoClassDefFoundError

java - 客户端应用程序中本地存储管理和数据持久性的最佳实践是什么?

java - 如何在 LinearLayout 中分隔项目?

java - 使用包的 Eclipse 问题

mysql - SQl 数据库备份显示错误 "Exception of type "System.OutofMemoryException“被抛出。(mscorlib)”