Java提供了两类主要的异常:runtime exception和checked exceptionchecked 异常也就是我们经常遇到的IO异常以及SQL异常都是这种异常对于这种异常JAVA编译器强制要求我们必需对出现的这些异常进行catch所以面对这种异常不管我们是否愿意只能自己去写一大堆catch块去处理可能的异常
但是另外一种异常runtime exception也称运行时异常我们可以不处理当出现这样的异常时总是由虚拟机接管比如我们从来没有人去处理过 NullPointerException异常它就是运行时异常并且这种异常还是最常见的异常之一
关于这两类异常的使用网上存在着一些辩论合理的使用这两类异常有利于我们写程序时代码的健壮性和合理性看完上面的链接里的那些辩论之后自己总结如下
. 当要决定是采用checked exception还是Unchecked exception的时候你要问自己一个问题如果这种异常一旦抛出客户端会做怎样的补救?
. 保护封装性(Preserve encapsulation)
. 不要创建没有意义的异常(Try not to create new custom exceptions if they do not have useful information for client code)
. 总是要做一些清理工作(Always clean up after yourself)
. 不要使用异常来控制流程(Never use exceptions for flow control)
. 在异常的底层记录日志(Log exceptions just once )