java基础知识回顾之异常处理

异常处理机制


      在程序运行的过程中难免会发生例外,例如除0溢出,数组越界和文件找不到等,一旦发生例外情况,将阻止程序的正常运行。为了将强程序的强壮性,必须考虑到可能发生的异常并能进行相应的处理。

      java通过面向对象的方法进行异常处理,一个方法在运行过程中,一旦发生了例外,就会产生一个异常对象,这一过程称为抛出,之后就会寻找相应的处理代码进行处理,这一过程称为捕获。如果没有找到,将会终止程序运行。

      java中的例外分为两类,分别是错误(Error)和异常(Exception)。Error是指java虚拟机内部放生错误,由java虚拟机抛出,例如资源耗尽等,通常这类情况不予处理。Exception是指编程错误或偶然的外界因素造成的一般性问题,例如对负数开平方根,访问的文件找不到和网络连接中断等。这类例外需要程序员进行处理。

      错误和异常的类结构:

    

一般所谓的异常处理是指Exception类的异常处理,Exception类又可以分为运行时异常(RuntimeException)和非运行时异常,RutimeException是运行时有Java虚拟机抛出的异常,例如:算数运算异常ArithmetricException和数组界异常ArrayIndexOutofBoundsException等;非运行时异常,例如输入输出异常(IOException)等,java编译器要求程序员必须捕获处理所有的非运行时异常,否则编译不通过,但对运行时异常可以不做处理,但为了程序的健壮性,最好还是处理一下。

   常见的运行时异常(RuntimeException)有:


  ·  ArithmetricException:数学计算异常

  ·  NullPointerException:空指针异常。

  · NegativeArraySizeException:负数组长度异常。

  · ArrayOutofBoundsException:数组索引越界异常。

  · ClassNotFoundException:类文件未找到异常。

  · ClassCastException:类型强制转换异常。

  · SecurityException:违背安全原则异常。

  非RuntimeException类型的异常主要有:


  · NotSuchMethodException:方法未找到异常。

  · IOException:输入输出异常。

  · EOException:文件已结束异常。

  · FileNoeFoundException:文件未找到异常。

  · NumberFormatException:字符串转换为数字异常。

  ·  SQLException:操作数据库异常。

处理异常的两种方式:


1.使用try{}catch(Exception e){}finally{//无条件执行}

2. 方法名前throws Exception

 自定义异常:

方法是继承Exception类,为方便使用通常提供两个构造方法,一个无参,一个有参。

例 

public class UserNotFoundException extends Exception{   
   public UserNotFoundException(){                    //无参构造方法
    super();
   }
   public UserNotFoundException(String msg){   //有参构造方法
     super(msg);
  }
} 

 自定义异常的使用,两种方式: 


 违反业务逻辑: 

public void f1()throws UserNotFoundException{
   if(条件不满足){
     throw UserNotFoundException(‘条件不满足‘);
   }
}

  try--catch()捕获输出:

public void f2(){
  try{
    //业务代码
  }catch(Exception e){
     throw new UserNotFoundException(‘没有词用户‘);
  }
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。