一般而言,<代码>Error是严重错误的(通常,平台本身),你无法想象。 我一直关注到的只有<代码>Error,才能做到log it,此后我再行。
这一点至关重要,因为容易让错误(和暂时的例外情况)传播呼吁,从而永远不会被打脚(例如,使用<条码>executorservice.submit(Runnable),而不必听回<条码>Future)。
www.un.org/Depts/DGACM/index_russian.htm
- out of memory
- abstract method error (e.g. running against different version of libraries to those built against)
- Assertions (i.e. programmer-defined invariants, or things that should never happen - lol!)
然后,我要说,<代码>RuntimeException通常(但并不总是)表示programming<>/em>错误:
- not checking for null, or passing in null
- passing in invalid arguments, or allowing invalid state
- modifying a collection as you are iterating over it
我通常也建议不要这样做,但这是一个灰色地区;或许你在将用户投入转交服务器之前不核对用户的意见,而这样做是很不值得的。
检查的<代码>Exceptions(即非营业时间)应当用于你可以合理预计会发生并合理(或可预见)处理你的代码。 我个人喜欢检查例外情况,但由于以同样方式处理不同例外类型(即多块相同的捕获区)所涉及的两岸/重犯,这些例外情况变得十分麻烦。 象Schala这样的语言更能捕获合成物,但随后它们也删除了checked<>-em>的例外情况。