1、Java异常分类
异常:程序不正常的行为或者状态
例如:除数为零,数组越界,读取不纯在文件
异常处理:程序返回到安全状态或者允许用户保存结果,并以适当的方式关闭程序
Throwable:所有错误的祖先
Error:系统内部错误或者资源耗尽,不管
Exception:程序有管异常,需要处理
-RuntimeException:程序自身的错误
-非RuntimeException:外界相关的错误 打开一个不存在的文件,加载一个不存在的类
Unchecked Exception:编译器不检查的异常,编译时可以通过,这类异常需要程序员自己处理
包括Error的子类和RuntimeException的子类
checked exception:编译器会辅助检查的异常,在编译时会报错,包括非RuntimeException
2、异常的处理
异常处理:允许用户及时保存结果;抓住异常,分析异常内容;控制程序返回到安全状态
catch可以有多个,根据不同的形参选择不同的入口,但是前面的catch的新参范围必须要比后面的小。
catch后不会返回try,意味着try后面的语句不会执行了,当catch完成后直接执行fianlly语句块。
方法可以存在异常但是不处理,用throws来声明这个方法有异常,然后i调用这个方法的方法就需要处理这个异常,如果不处理,也可以继续throws,知道main函数
3、自定义异常
Exception是所有异常的父类,Exception继承java.lang.Throwable,同时还有一个兄弟error
error一般是系统层面的问题无需处理
程序只需处理exception
自定义的异常需要使用throw主动抛出