java异常的总结

来源:互联网 发布:仿百度搜索源码 编辑:程序博客网 时间:2024/06/05 04:40

一、异常是什么?

是对问题的描述,对问题进行对象的封装,符合java一切皆对象的设计思想。

二、异常的体系结构

Throwable

       |--Exception

               |--RuntimeException

       |--Error

异常体系的源头为Throwable类,主要包括Exception和Error两大体系。用人体疾病来做类比就是,Error是不可治愈的疾病,例如癌症,不可以进行处理;Exception是可治愈的疾病,例如小感冒,可以通过程序进行处理。

都可以被关键字throws和throw进行操作,也只有异常体系具有此特点。

三、throws和throw的用法

throw定义在函数内,用来抛出异常对象;throws定义在函数上,用来抛出异常类,可以抛出多个异常类;

若抛出的异常对象有父子关系,父异常应该在子异常后面抛出。

当函数内容中有throw抛出异常对象,却没有进行try处理异常的时候,应该在函数上throws出异常类。当然,若出现的异常是RuntimeException及其子类,就不需要在函数上throws出异常类,只需要在函数内throw抛出异常对象就可以了。

如果函数上声明了抛出异常类,有两种处理方式:可以继续throws抛出;也可以try进行处理。

四、异常的种类,有两种

  1. 编译时被检测异常:该异常在编译时,如果既没有throws,也没有进行try处理,那么编译失败;
  2. 运行时异常(编译时不进行检测):在编译时不需要处理,在编译时也不需要检查,在该异常发生时,不需要处理,让程序停止,让调用者认识到错误的发生,从而修改代码。

五、异常处理的语句格式

  1. try{}catch(){}
  2. try{}finally{}
  3. try{}catch(){}finally{}

注意:finally中一般用来释放资源句柄,只有处在System.exit(0)语句之后时才不执行,其他情况一定会执行。

六、自定义异常

一般继承Exception或者RuntimeException,前者定义编译时异常,后者定义运行时异常

七、一个自定义异常的小例子

class NoValueException extends RuntimeException{public NoValueException(String message){super(message);}}interface Shape{abstract public double area();}class Rectangle implements Shape{private double length;private double width;public Rectangle(double length,double width){if(length<=0 || width<=0)throw new NoValueException("出现非法值!");this.length=length;this.width=width;}@Overridepublic double area() {// TODO Auto-generated method stubreturn this.length*this.width;}}public class ExceptionDemo {public static void main(String[] args) {// TODO Auto-generated method stubtry {double area = new Rectangle(-100, 10).area();System.out.println("长方形的面积为:"+area);} catch (NoValueException e) {// TODO: handle exceptionSystem.out.println(e.toString());}}}

一个小小的总结。~<>~

0 0
原创粉丝点击