Java学习日记----异常
------- android培训、java培训、期待与您交流! ----------
1 概念:
对问题的描述,将问题进行对象的封装.
2 体系 Throwable
|--Error
|--Exception
|--RuntimeException
异常体系的特点:异常体系中的所有类以及建立的对象都具备可抛性,也就是可以被throw和throws关键字所操作,只有异常具备这个特点.
3 throw和throws的用法
throw定义在函数内,用于抛出异常对象.
throws定义在函数上,用于抛出异常类,可以抛出多个,用","隔开.
4 当函数内由throw抛出异常对象,未进行try处理量,必须要在函数上声明,否则编译失败.但是 RuntimeException除外,也就是说如果函数抛出RuntimeException异常函数上是可以不用声明 的.如果函数上声明了异常,调用才需要处理,既可以throw,又可以try.
5 异常有两种:
1> 编译时被检测异常,该异常在编译时,如果没有处理,没有抛出,也没有try,编译失败,该异常被标 识,代表该异常可以被处理.
2> 运行时异常(编译时不检测)在编译时不需要处理,编译器不检查,该异常的发生,建议不要处理,让程序停止,需要对代码进行修改.
6 异常的处理语句
tyr{需要被检测的代码}catch(){处理异常的代码}finally{一定会执行的代码}
组合:
1> try{}catch(){}
2> tyy{}catch(){}finally{}
3> tyr{}finally{}
注意:finally里面通常定义关闭资源的代码,因为资源必须释放.
有一种情况是计不到finally的,在fianlly之前有System.exit(0);--->JVM退出.
7 自定义异常
1> 自定义类继承Exception类或RuntimeException类---->是为了让该类具备可抛性和操作异常的共性方法.
2> 要定义自定义异常信息时,可以使用父类已经定义好的功能,只要将异常信息传递给父类的构造函数就可以了.自定义异常是按照Java的面向对象的思想,将程序中出现的问题进行封装.
8 异常的好处
1> 将问题进行封装 .
2> 将正常代码和问题处理代码相分离,方便于阅读.
9 异常的处理原则
1> 处理方式只有两种:tyr或throw.
2> 如果调用到抛出异常的功能(方法)时,抛出几个就要处理几个,一个try对应多个catch.
3> 在多个catch中,父类的catch往下放.
4>catch内需要针对性的处理方式,不要简单定义printStackTrace(),输出语句,也不要不写.
|--如果捕获到的异常本功能(方法)处理不了时,可以继续在catch中抛出.
|--如果异常处理不了时,但又不属于该功能出现的异常,可以将异常转换后,再抛出和该 功能相关的异常.
|--如异常可以处理,当需要将异常产生的和本功能相关的问题提供方法出去,让调用者知 道,并处理,也可以将捕获到的异常处理后,转换新的异常.
10 异常子父类覆盖时的注意事项
1>子类抛出的异常必须是父类异常的子类.
2>如果父类或接口没有异常抛出时,子类覆盖出现异常,只能try,不能抛.