异常的应用finally与总结

一、finally{  
},finally块中放入一定要执行的代码,通常用来关闭数据库,关闭链接,节约资源,所以finally中的内容一定要被执行,但是有一张情况不被执行,就是catch(Exception
e){System.exit(0);}执行这个语句,系统直接退出了。

二、对异常的总结;

1.异常的概念:程序运行有可能出现问题,然后把问题进行对象的封装。

2.体系:Throwable:异常分为两种:一种是严重的情况,用Error表示,一般不作处理,它的子类都以error作为后缀;另一种是不严重的异常,它用Exception表示,它的子类都以Exception作为后缀,其中有一个比较特殊的子类,就是RuntimelException
运行时异常,抛出此异常,不用在函数体上声明,编译时不做处理;如果声明了,调用者可以处理,也可以不作处理,程序停止运行,需要修改传入的参数;

3、区别两个关键字的使用:throw和throws:

throw:是定义在函数体内,用来抛出对象;而throws定义在函数体上,用来抛出异常类名。

4.异常按照处理过程中分类为两种:

(1)、编译时异常:抛出异常对象时,要声明抛出异常,如果不声明;编译出错,如果声明了,调用者,就要做出相应的处理;要么抛出,要么try,否则出错;

(2)、运行时异常:就是编译时不做处理,然后运行时,程序停止运行。RuntimeException,这时就要修改传递进来的参数。

5、异常处理的几种格式:

try
{      
} catch(Exception 
e){            
}

try
{       }
catch(Exception
e)finally{           
}

try {       }finally{          
}

6.异常在子父类中的体现:如果子类重写了父类中的方法,而父类中的方法抛出异常,那么子类要么抛出父类异常,要么抛出子类异常,总之,要让父类异常能够处理。

7.如果父类方法抛出多个异常,那么子类在重写父类中的方法时,只能抛出父类异常的子类。

8,如果父类或者接口中的方法没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常,如果子类中确实出现了异常,那么就必须处理,绝对不能抛出。

下面通过一个代码来体现一下:

class ExceptionDemo6

{

 public static void main(String[] args)

 {

   Circle c=new Circle(-9);

   c.getArea();

  

 }

}

//定义一个异常

class NoValueException extends RuntimeException

{

  NoValueException(String message)

 {

  super(message);

 }

}

//定义一个接口,里面有一个方法,获取面积

interface Cir

{

 void getArea();

}

//定义一个圆

class Circle implements Cir

{

 private double r;

 public static final double
PI=3.14;//定义一个全局常量;

   
Circle(double r)  throws RuntimeException

 {

  this.r=r;

  if(r<=0)

throw new
NoValueException("非法值");

 }

 public void getArea()

 {

  System.out.println(r*r*PI);

}

}

上一篇:js实现数组去重的方式(7种)


下一篇:Go语言基础(一)