异常及异常类型

1.1异常概念

异常指的是在程序运行过程中发生的异常事件,通常是由外部问题(如硬件错误、输入错误)所导 致的。在Java等面向对象的编程语言中异常属于对象。

 

异常(Exception)都是运行时的。编译时产生的不是异常,而是错误(Error)。

最开始大家都将程序设计导致的错误(Error)不属于异常(Exception)。

所有的异常都是由 Throwable 继承而来,但在下一层立即分解为两个分 支:Error 和 Exception。

一个分支派生于 RuntimeException ; 另一个分支包含其他异常。

划分两个分支的规则是:由程序错误导致的异常属于 RuntimeException ; 而程序本身没有问题, 但由于像 I/O 错误这类 问题导致的异常属于其他异常。

派生于 RuntimeException 的异常包含下面几种情况:

错误的类型转换。

数组访问越界。

访问 null 指针。

不是派生于 RuntimeException 的异常包括:

•试图在文件尾部后面读取数据。

•试图打开一个不存在的文件。

•试图根据给定的字符串查找 Class 对象, 而这个字符串表示的类并不存在。

“ 如果出现 RuntimeException 异常, 那么就一定是你的问题” 是一条相当有道理的规则。

应该通过检测数组下标是否越界来避免 ArraylndexOutOfBoundsException 异常;应该通过在使用变量之前检测是否为 null 来杜绝 NullPointerException 异常的发生。

1.2 异常处理

抛出异常

Java 语 言 规 范 将 派 生 于 Error 类 或 RuntimeException 类的所有异常称为非受查 ( unchecked ) 异常,所有其他的异常称为受查( checked) 异常。

如果遇到了无法处理的情况, 那么 Java 的方法可以抛出一个异常。这个道理很简单:一 个方法不仅需要告诉编译器将要返回什么值,还要告诉编译器有可能发生什么错误。

需要记住在遇到下面 4 种 情况时应该抛出异常:

1 ) 调用一个抛出受査异常的方法, 例如, FilelnputStream 构造器。

2 ) 程序运行过程中发现错误, 并且利用 throw语句抛出一个受查异常(下一节将详细地 介绍 throw 语句)。

3 ) 程序出现错误, 例如,a[-l] =0 会抛出一个 ArraylndexOutOffloundsException 这样的 非受查异常。

4 ) Java 虚拟机和运行时库出现的内部错误。

如果出现前两种情况之一, 则必须告诉调用这个方法的程序员有可能抛出异常。

处理异常的关键词有:

try catch finally throw throws

try{}catch(){}

try{}catch(){}finally{}

try{}catch(){ }catch(){}catch(){}

try{}catch(){ }catch(){}catch(){}finally{}

finally 在异常处理时,代表最终有没有异常,有没有return continue break 都要执行代码段

1.3 异常类型

异常类型说明
Exception异常层次结构的根类
RuntimeException运行时异常,多数 java.lang 异常的根类
ArithmeticException算术谱误异常,如以零做除数
ArraylndexOutOfBoundException数组大小小于或大于实际的数组大小
NullPointerException尝试访问 null 对象成员,空指针异常
ClassNotFoundException不能加载所需的类
NumberF ormatException数字转化格式异常,比如字符串到 float 型数字的转换无效
IOExceptionI/O 异常的根类
FileNotFoundException找不到文件
EOFException文件结束
InterruptedException线程中断
IllegalArgumentException方法接收到非法参数
ClassCastException类型转换异常
SQLException操作数据库异常
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值