异常的应用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);
 }
}
 

原文地址:https://www.cnblogs.com/warrior4236/p/6055731.html