Java 捕获所有其他未预料到的异常

Java 捕获所有其他未预料到的异常,java,exception,Java,Exception,我定义并捕获了几种异常类型,即网络错误、验证错误等,现在我基本上想说捕获我没有预料到的所有其他异常 最好的方法是什么 只是使用了一般的例外吗?例外是人们应该合理捕捉的最大类型的例外;因为它涵盖了任何不属于 但有一句警告:根据您的具体环境,捕获异常仍然可能是一种不好的做法。这样做通常表示两件事之一: 你不知道你的代码在做什么 你的代码是如此复杂,以至于你真的不知道会有什么结果 以及两种选择;这是要避免的 换句话说:捕获异常通常只在非常高的级别上执行—应用程序中的较低级别应该确切地知道哪些异常来自较

我定义并捕获了几种异常类型,即网络错误、验证错误等,现在我基本上想说捕获我没有预料到的所有其他异常

最好的方法是什么

只是使用了一般的例外吗?

例外是人们应该合理捕捉的最大类型的例外;因为它涵盖了任何不属于

但有一句警告:根据您的具体环境,捕获异常仍然可能是一种不好的做法。这样做通常表示两件事之一:

你不知道你的代码在做什么 你的代码是如此复杂,以至于你真的不知道会有什么结果 以及两种选择;这是要避免的

换句话说:捕获异常通常只在非常高的级别上执行—应用程序中的较低级别应该确切地知道哪些异常来自较低级别;只抓那些。如果有的话,你真的只想在远处捕捉一个例外。因为:在catch块中唯一可以做的事情就是记录日志,并向用户发送错误消息

异常是应该合理捕获的最大类型的异常;因为它涵盖了任何不属于

但有一句警告:根据您的具体环境,捕获异常仍然可能是一种不好的做法。这样做通常表示两件事之一:

你不知道你的代码在做什么 你的代码是如此复杂,以至于你真的不知道会有什么结果 以及两种选择;这是要避免的


换句话说:捕获异常通常只在非常高的级别上执行—应用程序中的较低级别应该确切地知道哪些异常来自较低级别;只抓那些。如果有的话,你真的只想在远处捕捉一个例外。因为:在catch块中唯一可以做的事情就是记录日志,并向用户发送错误消息

我建议写下所有预期的异常,然后跟踪异常,例如

try
{
}
catch (expectedException1 e)
{
}
.
.
.
catch (Exception e)
{
}

这将有助于您对预期的个别异常采取行动,最后,当您得到异常时,您可以对其进行一般性处理。因为异常类位于所有异常的顶部,所以它必须位于最后。一般的规则是,当你沿着列表往下看时,层次结构朝着顶部移动,我建议写下所有预期的异常,然后用异常跟踪它,例如

try
{
}
catch (expectedException1 e)
{
}
.
.
.
catch (Exception e)
{
}

这将有助于您对预期的个别异常采取行动,最后,当您得到异常时,您可以对其进行一般性处理。因为异常类位于所有异常的顶部,所以它必须位于最后。一般规则是,当您沿着列表往下看时,层次结构会朝顶部移动。对于最佳实践,不扩展RuntimeException的异常应该被捕获和处理,或者抛出。还有一个可以在java.lang.Thread中设置的异常,您可以将其用作“全面捕获”(catch all)

以获得最佳实践,不扩展RuntimeException的异常应该被捕获和处理,或者抛出。还有一个,可以在java.lang.Thread中设置,您可以将其用作“一网打尽”

是。或者你可以抓到一次性的,但那是不可取的是的。或者您可以捕获Throwable,但这是不可取的SetUncaughtExceptionHandler可以与代码中其他可能的异常处理程序一起中断。理想情况下,它们用于事故报告系统。一般来说,您不应该使用它来捕获所有异常!此外,如果使用,在我们的工作完成后,必须适当注意将其传递给原始异常处理程序。setUncaughtExceptionHandler可以与代码中其他可能的异常处理程序一起中断。理想情况下,它们用于事故报告系统。一般来说,您不应该使用它来捕获所有异常!此外,如果使用,在我们的工作完成后,必须适当注意将其传递给原始异常处理程序。有第三种选择,可能是最合理的情况:您拥有可插拔功能,对此您几乎没有控制权。有第三种选择,可能是最合理的情况:您拥有可插拔功能,你几乎无法控制的。