浅析java中的异常

JAVA学习网 2017-07-19 14:25:17

  自学到java的异常时,有一些自己的理解,现在总结一下。

1.为什么要使用异常

  刚开始估计很多初学者和我一样,不理解为什么要异常,什么throws抛出异常,还要catch接住好麻烦的样子,通过一个简单的例子来理解一下。

package 异常;
class Circular
{
    public double area(double radius)
    {
        if(radius<=0)
        {
            System.out.println("非法数值");
        }
        return 3.14*Math.pow(radius,2);
    }
}
public class Second 
{
    public static void main(String[] args)
    {
        Circular c=new Circular();
        System.out.println(c.area(-4));
    }
}

这里只是一个简单的异常条件,园的半径不可能小于等于0的,如果直接用if判断然后处理,如果判断条件很多,处理又很复杂,就会影响代码的阅读性,很难在茫茫多的判断条件中找到正常流程的代码。所以抛出异常,然后在另外的类catch处理了异常,没有抛出的就是正常流程,很容易找到正常的流程,又根据异常的不同,很容易在另外的类找到处理方法,提高了代码的阅读性。

 

2.异常的分类

可以看出,java分为2种异常有分别为Error和Exception,2种异常又都是Throwable的子类。Error用来表示严重的错误,一般是系统或者底层资源的错误,如虚拟机错误和内存溢出是不可控制的,这些错误是不可查的,因为它们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的状况。Exception是一般化应用程序级别的的异常,又分为编译时的异常和运行时的异常运行时的异常都属于RuntimeExceptionRuntimeException不需要通过try,catch捕获,必须通过修改代码来解决。

常见的RuntimeException错误

NullPointerException - 空指针引用异常
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递非法参数异常。
ArithmeticException - 算术运算异常
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常
NegativeArraySizeException - 创建一个大小为负数的数组错误异常
NumberFormatException - 数字格式异常
SecurityException - 安全异常
UnsupportedOperationException - 不支持的操作异常

 

3.thorws和thorw

thorws用在方法声明后面,跟的是异常类名,可以跟多个异常类名,用逗号隔开,表示抛出异常,由该方法的调用者来处理。

thorw用在方法体内,跟的是异常对象名,只能抛出一个异常对象名,表示抛出异常,由方法体内的语句处理。

 

4.Exception(String massage)

Exception(String massage)方法中massage表示错误的说明,自定义异常可以继承这个类,重写这个方法:

 

class CustomException extends Exception
{
    CustomException(String massage)
    {
        super(magssae);
    }

 

这样创建CustomException(massage)对象,调用toString方法时就可以实现自定义异常名称和说明了。

 

阅读(793) 评论(0)