java中的异常

1、什么是异常

       在java程序运行时,出现的一些非正常的的现象,根据性质可分为错误和异常。在java程序中,所有throw的异常都必须从Throwable派生而来。类Throwable有两个直接子类:Error和Exception。

       Error类最常见的有程序进入死循环、内存泄漏等程序运行时本身无法解决的问题。Error类对象由java虚拟机生成并抛弃(通常java程序不对这类异常进行处理)。

       Throwable类常见的异常有:数组下标越界、算法溢出(超出数值表达范围)、除数为零、无效参数、内存溢出等。这些情况程序运行时本身可以解决,由异常代码调整程序运行方向,是程序仍可继续运行,直至正常结束。

       java编译器要求程序必须捕获或声明所有的非运行时异常,但对运行时异常可以不做处理。其中类RuntimeException代表运行时异常,原因是编程错误。其他则为非运行时异常,如输入/输出异常IOException等。

2、异常关键字

       java异常处理的关键语句有五个:try、catch、throw、throws、finally。其中try、catch、finally三个语句块应注意问题如下:

       (1) try、catch、finally不能单独使用,但可以组成try---catch---finally、try---catch、try---finally三种结构,catch语句可以有一个或多个,finally语句最多一个。

       (2) try、catch、finally中的变量作用域为代码内部,若要在三个块中都可以访问,则需要将变量定义到这些块外面。

       (3) 若有多个catch块,只会匹配其中一个异常类并执行catch块的代码,匹配顺序是由上到下的。

       throw、throws关键字的区别如下:

       throw用于方法体内部,用来抛出一个Throwable类型的异常。throws用于方法体外部的方法声明部分,用来声明方法可能会抛出某些异常。

3、异常处理中常见的问题

       (1) 过于庞大的try块

       将大量的代码放入单个try块中,就像出门旅游时把全部家当塞进集装箱带走,虽然东西是带上了,但要找出来可不容易。对于这种问题,可以设置多个异常抛出点进行解决。

       (2) 异常的完整性

        在java语言中,若一个函数运行时向上层调用者函数抛出一个异常,那么它就必须在该函数的声明中显式地注明(采用throws关键字)。如果在程序中利用throw出现一个异常,那么在程序中就必须要用catch处理这个异常。 

4、RuntimeException异常

        在java异常处理中,一般有两类异常:其一,通过throw语句,程序员在代码中人为抛出的异常;另外一个是系统运行时的异常,例如,“被零除”、“空字符串”、“无效句柄”等,对于这类异常,程序员实际上完全可以避免它。RuntimeException异常就是为了解决这样的问题实现的功能。在写程序时,RuntimeException异常大部分情况下没有必要声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值