编译时异常:在编译阶段,必须要手动处理,否则代码报错(提醒程序员检查本地信息)
运行时异常:在编译阶段是不需要处理的,是代码运行时出现的异常(代码出错而导致程序出现的问题)
异常作用一:异常是用来查询bug的关键参考信息
异常作用二:异常可以作为方法内部的一种特殊返回值,以便通知调用者底层的执行情况
异常的处理方式:①JVM默认的处理方式
1.把异常的名称,异常原因及异常出现的位置等信息输出在了控制台
2.程序停止执行,异常下面的代码不会再执行了
②自己处理
完整形态:
灵魂一问:会把try里面所有的代码全部执行完毕,不会执行catch里面的代码(注意点:只有当出现了异常才会执行catch里面的代码)
灵魂二问:会写多个catch与之对应(注意点:如果我们要捕获多个异常,这些异常如果存在父子关系的话,那么父类一定要写在下面;在JDK7之后,我们可以在catch中同时捕获多个异常,中间用 | 进行隔开,表示如果出现了A异常或B异常的话,采取同一种处理方案)
灵魂三问:相当于try……catch白写了,当前异常会交给虚拟机处理
灵魂四问:不会执行了。try中遇到问题,直接跳转到对应的catch。如果没有对应的catch与之匹配,则交给虚拟机处理
异常中的常见方法:
③抛出异常
小练习:
我们通过上面的练习,当我们的姓名和年龄发生错误时,我们使用的是throw new RuntimeException(),但其实这样表达并不准确
我们可以写一个异常类继承于RuntimeException(当运行产生异常)或者Exception(编译时产生异常)