以下均为个人理解
如有不对请在评论区指正QAQ
黑马程序员Java零基础视频教程_下部 图片出自这里
引子
一.什么是异常
异常的分类
主要学的是Exception
总结
编译时异常
必须要手动处理,否则代码异常
运行时异常
在编译阶段是不需要处理的,是代码运行时出现的异常
二.异常的作用
三.异常的处理方式
1.JVM默认的处理方式
注意:这里程序停止执行,下面的代码不会再执行了
2.自己处理(捕获异常 try catch)
程序会继续往下执行
3.抛出异常(交给调用者处理 throw)
即把该异常交给该方法的调用者处理
javabeen
Test
四.灵魂四问
1.
如果try中没有遇到问题,怎么执行?
不执行catch语句 直接往下执行
2.
如果try中可能会遇到多个问题,怎么执行?
输出
怎么解决呢
需要让每个异常都有其相应的catch语句与之对应
注意:
如果我们要捕获多个异常,这些异常中如果存在父子关系的话,那么父类一定要写在下面
怎么记呢
先打小怪(子类)再打boss(父类)
如果父类异常写在子类异常上面会报错
为什么会报错
所有的异常都可以被exception接收 所以下面的catch代码就不会执行了
父类太大包括了子类的所有情况
jdk7以后 可以在catch语句中写或者 (妈的又白雪)
注意是一个 | 不是两个||
表示如果出现a异常或者b异常 采取同一种处理方案
3.
如果try中遇到的问题没有被捕获,怎么执行?
程序报错
相当于try catch的代码白写 不执行catch里的代码 最后交给虚拟机进行处理(默认处理异常的方式)
4.
如果try中遇到了问题,那么try下面的其他代码还会执行吗?
输出
不会执行try下面的其他的代码 直接跳转到catch当中并执行
如果没有对应的catch与之匹配 还是会交给虚拟机进行处理
五.常见方法
最后一个方法包括前两个里输出的内容 最后一个用的多
1.getMessage
2.toString
3.printStackTrace 最常用
注意:此方法没有返回值 所以直接调用就可以
细节:打印信息 不会停止程序运行
1.以红色字体打印
2.打印的内容包括getMessage和toString 的内容
拓展
为什么是红色的字体将异常打印出来
正常的输出语句
用来打印错误信息的输出语句
以这个格式输出的内容都是红色
当以上两个输出语句同时出现时 二者的输出顺序可能和代码顺序不一样------------和多线程有关
六.异常的抛出处理
throw
另一种写法
总结
七.综合练习
Test
注意 :这里runtimeexception要写在numberformatexception后面
因为runtime是number的爷爷
先打小怪(子类)再打boss(父类)
javabeen
将setName直接重写
如果长度不在3-10内
创建一个运行时异常的父类抛出
将异常抛给调用者 方法就会停止 后面的代码就不会执行了--->数据就不会赋值给对象了
八.自定义异常
定义异常类
技巧:写继承关系
创建 空参构造 带参构造
alt+ins
在javabeen中写
注意:如果自定义异常是编译时异常,在调用异常的方法后面必须写throws
在方法定义处事先声明自己定义的方法
测试类中