Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java/Eclipse—在不强制执行的情况下确定可能的异常?_Java_Eclipse_Exception_Exception Handling - Fatal编程技术网

Java/Eclipse—在不强制执行的情况下确定可能的异常?

Java/Eclipse—在不强制执行的情况下确定可能的异常?,java,eclipse,exception,exception-handling,Java,Eclipse,Exception,Exception Handling,我有你的标准try/catch声明: try { // Do a bunch of stuff } catch ( Exception e ) { throw e; } 是否有任何方法可以确定可以从我的代码中捕获哪些可能的异常,而不必强制我的代码失败,以查看异常类型e 例如,如果我做了一些HTTP调用,或者我想以不同方式处理的一些JSON内容,我的代码可能如下所示: try { // Do a bunch of stuff } catch ( HttpException e ) {

我有你的标准
try/catch
声明:

try
{
  // Do a bunch of stuff
}
catch ( Exception e )
{
  throw e;
}
是否有任何方法可以确定可以从我的代码中捕获哪些可能的异常,而不必强制我的代码失败,以查看异常类型
e

例如,如果我做了一些HTTP调用,或者我想以不同方式处理的一些JSON内容,我的代码可能如下所示:

try
{
  // Do a bunch of stuff
}
catch ( HttpException e )
{
  // Do something
  throw e;
}
catch ( JSONException e )
{
  // Do something else
  throw e;
}
catch ( Exception e )
{
  throw e;
}
但也许我在代码中做了很多事情,我不确定(由于缺乏Java经验)可能会捕获到哪些异常


有没有任何可能的方法可以使用Eclipse查看一组代码并获得可能捕获的每种可能的异常类型的列表?

有两种类型的异常:选中的和未选中的

您无法获得所有未检查异常的列表,因为它们可能不会告诉您它们是什么。(如果您阅读正在使用的库的文档,他们可能会这样做。)


对于检查过的异常,如果不能捕获所有异常,则无法编译代码。我只需删除
异常e
块并使用它进行编译。诚实地捕捉每个异常是一个坏主意,除非你真的准备好处理它。

有两种类型的异常:已检查和未检查

您无法获得所有未检查异常的列表,因为它们可能不会告诉您它们是什么。(如果您阅读正在使用的库的文档,他们可能会这样做。)


对于检查过的异常,如果不能捕获所有异常,则无法编译代码。我只需删除
异常e
块并使用它进行编译。诚实地捕获每个异常是一个坏主意,除非您真的准备好处理它。

在NetBeans中,可能还有Eclipse中,如果您只是输入代码而没有任何try-catch块,IDE将提示您将抛出哪些异常,并提供将语句包装在try-catch块中。这可能是捕获所有可能异常的最简单方法。

在NetBeans和Eclipse中,如果只输入代码而没有任何try-catch块,IDE将提示您将抛出哪些异常,并提供在try-catch块中封装语句的功能。这可能是捕获所有可能异常的最简单方法。

无法获取可能未检查异常的列表。由于它们不是在任何地方声明的(它们是动态创建的),如果没有非常特定的代码分析器工具,这是不可能的——即使这样,它也可能无法从编译的库类中捕获一些

<> P>对于棘手的事情进行预测的例子,考虑分配内存的任何东西都会抛出内存异常,甚至可以反例实例化异常,这几乎不可能用任何静态分析工具找到。 如果你真的很偏执,你可以捕获RuntimeException,这应该会得到你想要处理的所有未检查的异常——这不是一个推荐的策略,但可以防止你的程序因未知/看不见的未来错误而失败


将抛出的异常放入注释中是一种很好的形式,但这种做法并没有得到一致遵守。

无法获得可能未检查异常的列表。由于它们不是在任何地方声明的(它们是动态创建的),如果没有非常特定的代码分析器工具,这是不可能的——即使这样,它也可能无法从编译的库类中捕获一些

<> P>对于棘手的事情进行预测的例子,考虑分配内存的任何东西都会抛出内存异常,甚至可以反例实例化异常,这几乎不可能用任何静态分析工具找到。 如果你真的很偏执,你可以捕获RuntimeException,这应该会得到你想要处理的所有未检查的异常——这不是一个推荐的策略,但可以防止你的程序因未知/看不见的未来错误而失败


将任何抛出的异常放入注释中是一种很好的形式,但这种做法并没有得到一贯遵守。

它能告诉您未声明的未经检查的异常吗?只要它是调用路径中的方法定义直接公开的,它就会建议它们。@glowcoder否,它们是未经检查的,而不是在可能抛出它们的方法的签名中。正如Bill K所说,它们可以以任何方式创建,包括动态创建。它能告诉您未声明的未经检查的异常吗?只要它是由调用路径中的方法定义直接公开的,它就会建议它们。@glowcoder不,它们是未经检查的,并且不在可能抛出它们的方法的签名中。正如Bill K所说,它们可以以任何方式创建,包括动态创建。