2019.11.28记,by月饼。
暂时不是重点
传统语言(比如C语言等)需要用if语句来判断是否出现例外。但在Java中:
- throw异常
- 运行时系统在调用栈中查找
- 捕获(catch)异常代码
语句:
抛出异常:
throw 异常对象
捕获异常:
try{
// fields;
}cache(异常类名 异常形式参数名){
// 异常处理语句组
}...
{}finally{
// 异常处理语句组
}
其中,catch
可以0到多个语句;finally可有可无。
1. Exception
类
构造方法:
// 方法一:无参数
public Exception();
// 方法二:带异常信息
public Exception(String message);
// 方法三:信息+原因
public Exception(String message, Throwable cause);
常用方法:
getMessage();
getCause();
printStackTrace();
2. 多异常处理
要求:子类异常要在父类异常之前
finally
语句:无论有无异常都会执行!
3. 受检异常
在Java中,Exception
分两种:
-
RuntimeException
(运行时异常)及其子类,可以不明确处理; - 否则称为受检异常(checked Exception)。受检异常是要明确处理的,要么捕获,要么抛出。
受检异常处理方法:
catch
-
throws
:在方法签名后面加throws XXXX
声明
注:在子类中,如要覆盖父类的一个方法,若父类中的方法声明了throws
异常,则子类的方法也可以throws
异常。
4. 自定义异常类
定义方法:
- 继承自Exception类或某个子Exception类
- 定义属性和方法或重载父类的方法
重抛异常及异常链接的方法:
- 将当前捕获的异常再次抛出:
throw e
- 重新生成一个异常并抛出:
throw new Exception("some message");
- 重新生成并抛出一个新异常,该异常包含了当前异常的信息,如:
throw new Exception("some message", e);
- 可用
e.getCause()
来得到内部异常
5. 断言(assertion)
这是自JDK 1.4起增加的功能。
格式:
assert
assert : info
JUnit测试:如何在IntelliJ idea中用?
6. 程序调试
一般来说,程序中的错误通常可以分三大类:
- 语法错误(Syntex Error)
- 运行错误(Rumtime Error)
- 逻辑错误(Logic Error):
debug
或unit test
Debug: 用IDE就能做,idea做的挺好的。
网友评论