一.异常
1.异常的分类体系
1.1.error 通常是虚拟机出现的错误,通常有内存溢出,栈请求过深等错误,这些错误是虚拟机无法解决的.
1.2.exception分为运行时异常和检查型异常,检查型异常通常指的是io异常,也就是如果本方法会涉及到io操作,可能出现io异常,则这个异常必须处理,要么抛出,要么捕获.运行时异常,通常是代码逻辑的错误.
2.异常的处理
2.1 抛出异常throws
public static void main(String[] args) throws Exception,RuntimeException{
//主动制造异常
//模拟输入密码不正确,而向上抛出异常
try {
String password = "123456";
throw new Exception(""); //模拟抛出异常
} catch (Exception e) { //捕获异常
//主动抛出错误
throw new Exception("密码错误! ");
}
//僵尸代码,不可能执行 Unreachable code
//System.out.println("完成了");
}
2.2 捕获异常 try-catch-finally
try {
//可能产生的异常的代码区
}catch (ExceptionType1 e) {
//捕获并处理try抛出异常类型为ExceptionType1的异常
}catch (ExceptionType2 e){
//捕获并处理try抛出异常类型为ExceptionType2的异常
}finally{
//无论是出现异常,finally块中的代码都将被执行
}
2.3 throw 和 throws的区别
1.位置不同:
throws 在方法声明上.
throw 在方法体中,通常在catch代码块内.
2.后面跟的东西不同.
throws 后面跟的是异常的种类.
throw 后面恨得是具体异常的实例,也就是new的异常.
3.后面跟的异常的个数不同.
throws 后面可以跑出多个不同的异常.
throw 后面只能跑出一个异常的实例.
2.4 自定义异常.
public class MyExeception extends RuntimeException{
private String msg;
private int code;
public MyExeception(String msg,int code) {
this.msg = msg;
this.code = code;
}
}