首页 > 代码库 > java基础知识回顾之异常处理
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(‘没有词用户‘); }}
java基础知识回顾之异常处理