----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
异常:通过面向对象的方式将对问题的描述信息进行封装,封装成对异常类。
异常体系:
Throwable
|--Error (错误)
|--Exception (异常)
|--RuntimeException(运行时异常)
体系特点:所有Throwable的子类都具有可抛性
抛出关键字:
throw和throws
throw在函数体中跑出异常
throws在函数上抛出异常类,可以多抛,中间用逗号隔开(即在函数上声明)
除了RuntimeException及其子类异常可以在函数内抛出,不进行try处理的情况下也可以不在函数上声明
其他的在函数内抛出不进行try处理的话,就必须在函数上声明,否则就会编译报错
如果一个函数声明了异常,函数的调用者需要进行处理,可以throws或try(这是处理异常的方式)
异常分两种:
编译时被检测异常(不按照异常规则办事)
该异常编译时未处理的话,编译时就会失败
如果该异常被标示,代表可以被处理
运行时异常(编译时不检测)
如果发生该异常,建议不处理,让程序停止执行,需要修正代码
常见异常处理格式:
1.
try
{ }
catch
{ }
注:此处可以有多个catch,父类的catch放到最下面 若捕获到的异常处理不了可以继续抛出,即catch的大括号中还可throw 异常对象
2.
try
{ }
catch
{ }
finaly
{ }
3.
try
{ }
finaly
{ }
除非finally之前有System.exit(0); finally之后的大括号内的内容总是被执行
自定义异常:就是继承Exception或RuntimeException,成为其子类即可,具体继承那个要看异常的类型,调用者不能处理的继承RuntimeException。
重写(覆盖)中的异常:
记住一点即可,子类中不能出现“新型”的异常,这样父类的引用指向子类的对象时会出现问题,
所以子类方法中抛出的异常必须是父类异常的子类或其本身,
若父类中抛出多个异常,子类抛出的异常只能是父类的 子集!