JavaSE-异常机制原理介绍

说到异常,java程序中总会有些意想不到的状况所引发的错误,java中的错误也会以对象的方式呈现,都是java.lang.Throwable的各种实例子类。java言称“万事万物皆为对象”,当然错误也可包装为对象,只要你能捕捉包装错误的对象,就可以针对该错误做一些处理。

异常机制

异常机制就是指当程序中出现错误时,程序将如何处理的。具体来说,异常机制提供了程序退出的安全通道。当出现错误时,程序的执行流程发生改变,程序的控制权交给异常处理器。
通俗的讲,就是为了让程序继续执行下去,而不至于中断。

程序错误

程序错误一般分为三种:

  1. 编译错误:程序没有遵循语法规则,编译程序能够自己发现并提示我们找到错误的位置和发现错误的原因。
  2. 运行时错误:程序在执行时,运行环境发现了不能执行的操作。
  3. 逻辑错误:程序没有按照预期的逻辑顺序执行。
常见的异常
异常名称异常描述
java.lang.NullPointerException空指针异常:对象为空,并且调用了相应方法
java.lang.ClassNotFoundException找不到指定类
java.lang.ArrayIndexOutOfBoundsException数组下标越界
java.lang.NumberFormatException数字格式化异常
java.lang.ArithmeticException数学运算异常
java.lang.StackOverflowError内存空间溢出错误,方法递归调用中经常发生
java.lang.ClassCastException类型转换异常,向下转型经常发生
java.util.InputMismatchException输入类型不匹配
java.text.ParseException时间格式化异常,SimpleDateFormat中经常发生
异常继承架构

异常架构图

提示:上图中的ReflectiveOperationExceptions是JDK7之后新增的类,JDK之前ClassNotFoundException等类是直接继承自Exception类。
错误被包装成对象后,这些对象都是可抛出的,因此设计错误对象都是继承自java.lang.Throwable类,Throwable定义了取得错误信息、堆栈追踪等方法,它有两个子类:java.lang.Error和java.lang.Exception.
异常Exception类总共有两大类:

  • 受检异常
  • 非受检异常·

Error与其子类实例代表严重系统错误,如一些硬件层面错误、JVM错误或者内存不足等问题。虽然可以使用try、catch来处理对象,但是不建议,发生严重系统错误时,java程序本身是无力回复的。举例来说,如果JVM所需内存不足,如何写程序要求操作系统给予JVM更多的内存呢?当Error对象抛出时,基本上不用处理,任其传播到JVM为止,或者是最多留下日志信息。

单就语法与继承架构上来说,如果某个方法声明抛出了Throwable或者子类实例,只要不是属于Error、java.lang.RunTimeException或者其子类实例,就必须明确使用try、catch语句法加以处理,或者用throws声明这个方法会抛出异常,否则编译失败。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值