0

我知道这样的问题可能取决于程序员打算让他的程序做什么,但是在学校里,我们被教导永远不要抛出或捕获Exception(类),而是要确保它抛出一个更特定于运行时类型的子类我们期望可能发生的错误(例如 IllegalArgumentException)。但是,我现在正在工作,在“现实世界”中,我在我工作的代码中看到了很多场景,以前的程序员Exception在方法中抛出了所有东西,或者像这样捕获Exception,而不是它的更具体的子类之一。

所以我想知道,像这样抛出和捕获所有东西都可以吗,这样做是不好的编程吗?

4

3 回答 3

1

这样做并没有错,但它会让你的调试生活变得非常困难。很多人会捕获异常类并记录 Exception.Message。没有足够的细节,特别是如果你在大型系统上工作,你不能总是单步执行实时代码等,这将是一项乏味的任务。

我倾向于捕获特定的异常并相应地处理它们,但我也捕获 Exception 类以确保捕获所有异常(可能会更改对象以在未来的框架版本中包含更多异常)。

于 2012-09-06T10:48:51.617 回答
1

我的想法是,处理异常的方式也应该取决于您正在创建的应用程序的类型。例如,如果您正在开发某种框架或库,您不应该尝试打印错误消息或记录它们,您已经抛出它们,因为使用您的框架/库的其他开发人员将负责处理异常当他们使用你的代码时优雅地。

如果您正在开发某种前端应用程序,那么您应该对异常处理更加敏感。我认为尽可能使用自己的异常类会更好,因为这将帮助您在以后确定应用程序中的错误或运行时问题。当您处理异常时,您应该始终从更具体的异常转向一般异常。最后,您应该处理“Exception”超类的异常,以确保您的应用程序不会崩溃,最好在应用程序的主入口点中有一个 try-catch 块。在处理异常记录错误时发生的事情是一个很好的实践,当它稍后诊断错误时。

于 2012-09-06T12:22:14.613 回答
0

正如您所学到的,这是不好的做法。

该规则的一个主要例外是顶级异常处理程序(用于捕获未处理的异常) - 这样做的目的是记录异常,以便开发人员稍后可以读取它们并用于修复应用程序(并且通常会重新抛出为了使应用程序崩溃 - 而不是让它处于不一致的状态)。

于 2012-09-06T10:47:36.627 回答