一、异常
定义:中断了正常指令流的事件
class Test {
public static void main (String args []) {
System.out.println("1");
//int i = 1/0;//uncheck exception
try { //存放有可能出现异常的代码
int i = 1/0;
}
//如果try中出现异常,那么就会执行catch
catch(Execption e){//e为虚拟机产生的异常对象
e.printStackTrace(); //打印异常信息
}
System.out.println("2");
}
}
class TestCheck {
public static void main (String args []) {
//check exception,java强制要求对异常进行捕捉
//Thread.sleep(1000);
try {
Thread.sleep(1000); //让当前线程休眠1000毫秒
}
catch (Exception e) {
e.printStackTrack();
}
finally { //无论是否出现异常都会执行
System.out.println("finally");
}
}
}
error:错误,指虚拟机在运行时产生的错误,一旦产生,虚拟机就会直接关闭。
exception:异常,又分为运行时异常(RuntimeException)和编译时异常,又叫uncheckException和checkException。
二、
1、throw
Java虚拟机判断不了异常时,可以在出现该情况时可以定义一个异常对象,再使用throw抛出异常
e.g.1
class User {
private int age;
public void setAge(int age) {
if(age < 0) {
RuntimeException e = new RuntimeException("年龄不能为负数"); //定义异常对象
throw e; //抛出异常
}
this.age = age;
}
}
class Test {
pulic static void main(String args []) {
User user = new User();
user.setAge(-20);
}
}
2、throws
throws对函数声明异常,函数本身不对异常进行处理,在调用时对异常进行trycatch处理
class User throws Exception{
private int age;
public void setAge(int age) {
if(age < 0) {
RuntimeException e = new RuntimeException("年龄不能为负数"); //定义异常对象
throw e; //抛出异常
}
this.age = age;
}
}
class Test {
pulic static void main(String args []) {
User user = new User();
try {
user.setAge(-20);
}
catch (Exception e) {
e.printStackTrack();
}
}
}