一、
Error:系统级别问题,java退出等,代码无法控制
(2)
Exception:java.lang包下,称为异常类,他表示程序本身可以处理的问题
(3)RuntimeException及其子类:运行时异常,编译阶段不会报错(空指针异常、数组索引越界异常)
(4)java文件 → 字节码文件 → 运行结果
javac.exe (编译时异常,是在编译成class文件时必须处理的异常,也称之为受检异常)
java.exe(运行时异常,在编译成class文件不需要处理,在运行字节码文件时可能出现的异常)
简单来说:编译时异常就是在编译的时候出现的异常,运行时异常就是在运行时出现的异常
二、
(1)数组索引越界异常:ArrayIndex Out of Bounds Exception
(2)空指针异常:NullPointerException
直接输出没有问题,但是调用空指针的变量的功能就会报错
(3)类型转换异常:ClassException
(4)数学操作异常:ArithmeticException
(5)数学转换异常:NumberFormatException
三、
编译时异常
(1)不是RuntimeException或者其子类的异常,编译阶段就会报错,必须处理,负责代码不通过
(2)编译时异常的作用
是担心程序员的技术不行,在编译阶段就爆出一个错误,目的在于提醒不要犯错
四、
异常的默认处理流程
(1)默认会在出现异常的代码那里自动的创建一个异常对象:ArithemticException
(2)异常会从方法中出现的点这里抛出给调用者,调用者最终抛出给JVm虚拟机
(3)虚拟机接收到异常后,先在控制台直接输出异常栈信息数据
(4)直接从当前执行的异常干掉当前程序
(5)后续代码没有机会执行了,因为程序已经死亡
五、
编译时异常的处理机制
(1)出现异常直接抛出去给调用者,调用者也继续抛出去
(2)出现异常自己捕获处理,不麻烦别人
(3)前两者结合出现异常直接抛出去给调用者,调用者捕获处理
六、
异常的处理方式
(1)throws
throws:用在方法上,可以将方法内部出现的异常抛出去给本方法的调用者处理
(2)try......catch
try......catch:监视捕获异常,用在方法内部,可以将方法内部出现的异常直接捕获处理
ctrl+Alt+T
Alt+回车:Add' catch'(lausels)
e.printStackTrace(); //打印异常栈信息
(3)前两者结合
方法+throws Exception
Alt+回车 选try/catch
sc.nextline //收一行数据
选try catch后
catch(Exception e)
七、
自定义异常
好处:(1)可以使用异常的机制管理业务问题,提醒程序员注意
(2)同时一旦出现bug,可以用异常的形式清晰的指出出错的地方
八、
自定义异常的分类
(1)自定义编译时异常
定义一个异常类继承Exception 右键选generate
重写构造器 再次右键选generate 再选constructor
在出现异常的地方用throw new 的自定义对象抛出 右键generate 再选Exception(有参)
<2>作用:编译时异常里编译阶段就报错,提醒更加强烈,一定需要处理
(2)自定义运行时异常
定义一个异常类继承 RuntimeException
重写构造器
在出现异常的地方用 throw new 自定义抛出
<2>作用:提醒不强烈,编译阶段不报错,运行时才出现
1680

被折叠的 条评论
为什么被折叠?



