本帖最后由 张桂林 于 2012-10-7 16:33 编辑
异常:
1:是什么?是对问题的描述,将问题进行对象的封装
异常有两种:
1.1编译时被检测异常
在编译时,如果没有处理(没有抛出也没有try),编译失败
1.2运行时异常(编译时不检测)
在编译时,不需要处理,编译器不检查,该异常的发生建议不处理,让程序停止,需要代码进行验证。
2:异常格式:
try
{需要被检测的代码
}
Catch(异常类 变量)
{
处理异常的代码: ( 处理方式)
}
Finally{
一定会被执行的代码
}
finaly 中定义的通常是关闭资源代码,因为资源必须释放。
trows异常申明
3对异常的处理
3.1声明异常时建议申明更为具体的异常,这样的处理可以更具体
3.2对方声明几个异常,就对应有几个catch块。不要定义多余的catch 块。如果多个catch块中的异常出现继承,父类异常catch块放在最下面。
3.3建立在进行catch 处理时,catch 中一定要定义具体处理方式,不要简单定义一句:e.printStrackTrace().也不要简单的书写一条输出语句。
当捕获到的异常,本功能处理不了时,可以继续在catch 中抛出。
3.4:处理方式有两种 try 和throws
3.5:多个catch ,父类的catch 放到最下面。
4自定义异常:(本项目特有的问题进行自定义的异常封装)
定义类继承Exception 或者RuntimeException
4.1:为了该类自定义类具备可抛性
4.2:该类具备操作异常的共性方法
当要定义自定义异常的信息时,可以使用父类已经定义好的功能,异常信息传递给父类的构造函数
4.3如何自定义信息呢:?
父类已经把异常信息的操作都完成了。所以子类只要在构造函数时,将异常信息传递给父类通过super 语句。那么就可以直接通过getMessage方法获取自定义异常信息。
4.4自定义异常必须继承Exception
继承Exception 原因:
异常体系有一个特点,因为异常类和异常对象都被抛出,他们都具备可抛性,这个可抛性是Throwable所特有的。只有这个体系中的类和对象才可以
5:throws 和throw 操作,throw 和throws区别:
5.1throws 使用在函数上(throws { ;
throws 后面跟的异常类,可以抛出多个用逗号隔开。
5.2throw 使用在函数内
throw 后跟的是异常对象:throw new MyException
6异常在子父类覆盖中的体现:
6.1:子类在覆盖该父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类异常的子类
6.2:如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出异常的子集。
6.3:如果父类或者接口的方法没有异常抛出,那么子类在覆盖方法时出现异常,只能try 不可以抛出异常。
6.4如果子类的方法发生了异常,就必须进行try 处理,绝对不能抛
6.5:当函数内容有throw 抛出异常,并未进行try异常处理。必须都要在函数上申明都编译失败。注意RuntimeException 除外,也就是说,函数内如果抛出的RuntimeException异常,函数上可以不用申明。
7:异常的好处:
将问题进行封装
将正常流程代码和问题代码分离方便阅读。
将问题进行封装。
正常流程和问题分离
|