异常
java.lang.Throwable
Error:错误
栈溢出:StackOverflowError
内存泄漏导致的栈溢出 ->
Exception:异常
| - 运行时异常(非已检查异常)
| - 已检查异常
Error(错误):
出现Error的时候,代码一定是有问题的,程序必须要处理,不然运行不了
严重错误,一般都跟内存问题相关,是必须要解决的
Exception:异常
| - RunntimeException(运行时异常)
| - NullPointerException - 空指针异常
| - IndexOutOfBoundsException - 某种类型下标越界异常
| - ClassCastException - 类型转换异常
| - NumberFormatEception - 数值转换异常
| - 已检查异常
| - ClassNotFoundException - 类未找到异常
| - ParseException - 格式化异常
| - IOException - IO异常
| - UnsupportedEncodingException - 不支持的字符集异常
解决异常的方法:
1.try - catch - 捕获异常【自己能解决的异常】
异常出现:
遇到未处理的运行时异常,程序终止,并且打印出错误的栈路径
注意的问题:
a.可能会出现异常代码,必须写在try中
b.要捕获的异常类型必须符合出现异常的代码
c.try代码块中出现异常,如果捕获了,就执行catch中的内容
可以选择打印栈路径
d.一个try后边可以跟多个catch
可以有finally,也可以不加
e.try - catch在使用上是可以进行嵌套
f.如果抛出的异常有父子类关系,先抛出子类异常,再抛出父类异常,否则编译不通过
g.finally代码块中的内容,是无论如何都会执行的内容
h.finally代码块的作用:释放资源
2.throws - 抛出异常【自己解决不了的异常】
a.throws相关的,一般都是已检查异常,必须要解决的问题
b.使用: 在方法上添加 关键词: throws,则表示抛出异常
处理异常的原则:
a.能自己处理的就自己处理,相当于是try - catch
b.不能解决的才往上抛出,相当于throws
throw 和 throws的区别
a. throw -> 制造异常
throws -> 解决异常
b. throws用来声明一个已经抛出的异常,这个异常不一定会执行
throw制造异常的,制造出来的异常一定是会执行的
c. throws是声明在方法上
throw是在方法内部创建
throw new Exception()
自定义异常: 自己写一个类继承异常类
1)自定义异常类继承运行时异常
Class MyException extends RunntimeException
2)自定义异常类继承已检查异常
Class MyException extends Exception
3)使用步骤:
a.自定义异常类继承异常类
b.制造异常 throw new MyException();
c.try - catch处理异常
异常常用API
e.printStackTrace() - 获取异常栈路径
e.getMessage() - 获取异常信息
异常产生的情况:
a.代码错误的时候,会产生异常
b.手动制造异常 throw new Exception()
关键词: throw
怎么抛出异常?
1.try - catch - 捕获异常
2.throws - 抛出异常
代码测试方法:
System.out.println(); --> 打印(打桩)测试
DeBug --> 断点测试
JUnit --> 单元测试,一个方法作为一个单元
别人写好的代码,压缩成jar包(class文件)
使用别人写好的代码?
1.将别人写好的代码工程,打包成jar包
是将字节码文件进行打包
2.在自己的工程中 关联这个jar文件 --> 添加依赖
3.在自己的代码中直接使用 import -> 类
JUnit常见注解:
@Test --> 单元测试
@Before --> 在Test之前执行的代码
@Afer --> 在Test之后执行的代码