异常

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之后执行的代码