2012-09-06 47 views
0

我知道这样的问题可能取决于程序员打算让他的程序做什么,然而在学校我们被教导到从来没有抛出或捕获Exception(该类),而是确保它抛出一个更具体的子类我们预计会发生运行时错误(例如IllegalArgumentException)。然而,我现在正在工作,在'现实世界'中,我看到了很多我在编写代码的场景,以前的程序员在方法中抛出了所有内容,或者捕获了Exception而不是其中一个更具体的子类。发现或捕获异常类(每个异常都可能)是错误的吗?

所以我不知道,它是确定引发和捕获一切就是这样,这是不好的编程这样做呢?

+0

简答:永远不会发生异常。长答案:永远不会抛出异常,抛出是好的。 –

回答

1

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

如果你正在开发某种前端应用程序,那么你应该与异常处理更加细腻。我认为最好在可能的情况下使用自己的异常类,因为这会帮助您稍后在应用程序中指出错误或运行时问题。当你处理异常时,你应该从更具体的例外到一般例外。最后,您应该处理“Exception”超类的异常,以确保您的应用程序不会崩溃,最好是在应用程序的主入口点应该有一个try-catch块。在处理异常日志记录错误时发生的事情在后来诊断错误时是一种很好的做法。

0

这是不好的做法,就像你所学到的一样。

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

1

这是没有错要做到这一点,但它可以让你的生活调试非常困难。许多人会捕获异常类并记录Exception.Message。没有足够的细节,尤其是如果你在大型系统上工作,而你不能总是通过实时代码等,这将是一项乏味的任务。

我倾向于捕捉特定的异常,并相应地处理它们,但我也捕捉到了异常类,以确保所有异常被捕获前进(一个对象可能被改变,包括在未来框架版本的详细例外)。