《Think in java》:1.不应把java的异常处理机制当成是单一用途的工具。是的,他是被设计用来处理一些烦人的运行时错误,这些错误往往是由代码控制能力之外的因素导致的,然而,他对于发现某些编译器无法检测到的编程错误,也是非常重要的。
《Think in java》:2.处理异常的一个重要原则是"只有在你知道如何处理的情况下才捕获异常"。实际上,异常处理的一个重要目标就是把错误处理的代码同错误发生的地点相分离。这使你能在一段代码中专注于要完成的事情,至于如何处理错误,则放在另一段代码中完成。这样一来,主干代码就不会与错误处理逻辑混在一起,也更容易理解和维护。通过允许一个处理程序去处理多个出错点,异常处理还使得错误处理代码的数量趋向于减少。
《Think in java》:3."被检查的异常"使这个问题变得有些复杂,因为他们强制你在可能还没准备好处理错误的时候被迫加上catch子句,这就到导致了吞食则有害的问题。
极客时间专栏介绍:我们先来看看printStackTrace()的文档,开头就是“Prints this throwable and its backtrace to the standard error stream”。问题就在这里,在稍微复杂一点的生产系统中,标准出错(STERR)不是个合适的输出选项,因为你很难判断出到底输出到哪里去了。尤其是对于分布式系统,如果发生异常,但是无法找到堆栈轨迹(stacktrace),这纯属是为诊断设置障碍。所以,最好使用产品日志,详细地输出到日志系统里。