Java编译器要求程序必须捕获或者声明所有的非运行时异常,但对运行时异常可以不做处理。
Runtime异常(运行时异常):无须处理。原因:编程错误。【除数为零、空字符串、无效句柄】javac无法通过编译时的静态语法检测异常,完全取决于运行时状态。
Checked异常:可在编译阶段被处理的异常,强制程序处理它。仅java语言提供:严谨、健壮但也降低生产率和代码执行效率。
当前方法知道如何处理该异常——try catch,不知道——定义该方法时声明抛出该异常throws。
自行抛出异常throw语句可单独使用,抛出异常实例,只能抛一个。throw new Exception();throw抛出的为Checked异常时,需要(1)try块里(2)带throws声明抛出的方法里。
抛出异常try {} 捕获异常catch() {} 花括号不可省略 finally {} 必定会执行(除system.exit(1)),用于回收资源:数据库连接jdbc、网络连接Connt、磁盘文件IO。Java7重写资源类使其实现AutoCloseable或Closeable接口