Java异常处理

Java异常的分类,在按照异常需要处理的时机分:


1.    编译时异常(CheckedException)也称为受检查异常,Java认为Checked异常都是可以被处理的异常,所以Java程序必须显示处理Checked异常,如果程序没有处理Checked异常,该程序在变异时就会大声错去无法编译。对 Checked 异常处理方法有两种:
前方法知道如何处理该异常,则用 try...catch 块来处理该异常。
当前方法不知道如何处理,则在定义该方法是声明抛出该异常。

2.    运行时异常(RuntimeException),运行时异常只有当代码在运行时才发行的异常,编译时不需要 try catch。Runtime 如除数是 0 和数组下标越界等,其产生频繁,处理麻烦,若显示申明或者捕获将会对程序的可读性和运行效率影响很大。所以由系统自动检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示捕获它们。

总结:异常的跟类为java.lang.Throwable,Throwable下面派生了两个子类Error和Exception,Error一般指的是虚拟机相关的问题,Exception异常是可以处理的异常,Exception又分为系统异常金和普通异常,系统异常是软件本身缺陷所导致的,也就是开发人员考虑步骤所导致的,如数组脚本越界(ArrayIndexOutOfBoundsException),空指针异常(NullPointerException),类型转换异常(ClassCastException),普通异常是运行环境的变化胡或者异常所导致的问题,是用户能够克服的问题,例如,网络断线,硬盘空间不够,发生这样的异常后,程序不应该死掉。

常见的几个RuntimeException


1.    java.lang.NullPointerException(空指针异常)
2.    java.lang.ClassNotFoundException(指定找不到类)
3.    java.lang.IndexOutOfBoundsException(数组下标越界异常)
4.    java.lang.IllegalArgumentException(方法传递参数异常)
5.    java.lang.ClassCastException(数据类型转换异常)
6.    SQLException SQL异常,常见操作数据库是的SQL语句异常。

throw和throws的区别

throw:

      1.throw 语句用在方法体内,表示抛出异常,由方法体内的语句处理。

      2.throw 是具体向外抛出异常的动作,所以它抛出的是一个异常实例,执行 throw 一定是抛出了某种异常。

throws:

      1.throws 语句是用在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理。

      2.throws 主要是声明这个方法会抛出某种类型的异常,让它的使用者要知道需要捕获的异常的类型。

      3.throws 表示出现异常的一种可能性,并不一定会发生这种异常。


区别

throw 是抛出一个具体的异常类型,throws是用来声明一个方法可能抛出的所有的异常信息,throws是将异常信息声明但是不处理,而是将异常上传,谁调用我就交给谁来处理。

throws:当不知到的异常,不想自己处理,不想有任何的异常处理,就可以交给被人处理。
格式是:方法名(参数)throws 异常1,异常2...

class ExceptionHandleTest{
	public void test(int i,int j) throws Exception{
    	int result = i/j;
        return result;
    }
}

throw:就是自己进行异常处理,处理的时候有两种形式,要么自己捕获异常(也就是try catch处理),要么声明抛出一个异常(就是throws异常)

 public ProductInfo onSale(String productId) {

        ProductInfo productInfo = repository.findOne(productId);
        if (productId==null){
            throw new MyException(ResultEnum.PRODUCT_NOT_EXIST);
        }
        if (productInfo.getProductStatusEnum()==ProductStatusEnum.UP){
            throw new MyException(ResultEnum.PRODUCT_STATUS_ERROR);
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值