“这是我参与8月更文挑战的第28天,活动详情查看: 8月更文挑战”
写在前言
本篇我们一起来学习Java中的异常的概念和体系,以及异常的分类和异常产生过程的分析。
以下内容如有不正之处,欢迎掘友们批评指正。
异常的概念
异常︰指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。
在java等面向对象的编程语亲中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。
异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行.
异常体系
异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable,其下有两个子类︰java.lang.Error与java.lang.Exception,平常所说的异常指java.lang.Exception 。
Throwable体系:
- Error:严重错误Error,无法通过处理的错误,只能事先避免,好比绝症。
- Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。好比感冒、阑尾炎。
Throwable中的常用方法∶
- public void printStackTrace():打印异常的详细信息。 包含了异常的类型异常的原因,还包括异常出现的位置,在开发和调试阶段,都得使用printStackTrace。
- public string getMessage():获取发生异常的原因。 提示给用户的时候就提示错误原因。
- public string tostring():获取异常的类型和异常描述信息(不用)。
出现异常,不要紧张把异常的简单类名,拷贝到API中去查。
异常分类
java.lang. Throwable类是Java语言中所有错误或异常的超类。
在Throwable下有两个子类Exception和Error。
Exception其中一个子类叫RuntimeException需要我们了解。
-
Exceotion:编译期异常,进行编译(写代码)java程序出现的问题
- RuntimeException:运行期异常,java程序运行过程中出现的问题 异常就相当于程序得了一个小毛病(感冒,发烧),把异常处理掉,程序可以继续执行(吃点药,继续革命工作)
-
Error:错误 错误就相当于程序得了一个无法治愈的毛病(非典,艾滋).必须修改源代码,程序才能继续执行
异常的产生过程的解析
当JVM检测出程序会出现异常时会做两件事
- JVM会根据异常产生的原因创建一个异常对象,这个异常对象包含了异常产生的原因、内容和位置。
- 如果没有对应的try catch处理,JVM会中断当前正在执行的java程序(中断处理)。 碰到异常时,如果当前拥有者没有异常的处理逻辑,那么就会把异常抛出给上一级调用者,直到找到异常的处理逻辑,如果main方法中仍没有异常的处理逻辑,那么JVM就会中断当前正在执行的Java程序。