常见的错误类型:
1. 用户输入错误
2. 设备错误(打印机、网页、文件)
3. 物理限制(磁盘、内存)
4. 代码错误
有些情况下,发生错误时,可以通过错误返回码-1,null得知,对于没有返回码的错误只能通过设置异常处理器
异常类是一个封装了错误信息的对象
Throwable是所有异常类的超类,它有2个子类,Error(系统内部错误和资源耗尽错误)和Exception,而Exception也有2个子类,IOException和RuntimeException
Error和RuntimeException是属于未检查异常,即系统是不会提示你的,而IOException是已检查异常,如果没有设置异常处理,系统是会提示你的
一般而言,RuntimeException错误都是自己代码的问题
对于会抛出异常的方法,在参数括号后面使用throws声明会抛出的异常类;在具体抛出异常的地方,使用throw抛出异常对象,这种方法便于将异常抛给调用方去处理
使用try/catch捕获异常,一个try可以对应多个catch,而catch块子句也是可以合并的,使用| 隔离;catch块里也可以再次抛出异常,多用于对捕获异常进行包装
对于必须要回收的资源,使用finally解决,它在无论是否发生异常的情况下都会执行;对于return,当try中存在return时,finally是会在方法返回前执行的,也是在return之前执行,而如果这时finally里也有一个return,那么try中的return就不会执行了,因为程序已经结束了
断言机制允许在测试期间向代码中插入一些检查语句,当系统发布时,这些语句将会被自动地移走,使用关键字assert修饰
使用assert 条件 / assert 条件:表达式
当条件不符合时,会抛出AssertionError异常,如果带有表达式,表达式内容会作为AssertionError构造器的参数,比如assert x >= 0 : x
断言机制默认是关闭的,可以在终端通过java –enableassertions 程序名开启