- 什么是异常
- 异常:中断了正常指令流的事件
- 异常的分类
- uncheck exception
classTest{
publicstaticvoid main(String args[]){
System.out.println(1);
//uncheck exception
int i =1/0;
System.out.println(2);
}
}
结果:
D:\work\src>javac Test.java
D:\work\src>java Test
1
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Test.main(Test.java:5)
- check exception
- 包括exception这个类以及exception除了runtimeException之外的子类
classTestCheck{
publicstaticvoid main(String args []){
//check exception
Thread.sleep(1000);
}
}
结果:
D:\work\src>javac TestCheck.java
TestCheck.java:4: 错误: 未报告的异常错误InterruptedException; 必须对其进行捕获或声明以便抛出
Thread.sleep(1000);
- try...catch...finally结构的使用方法
- 如果try里面的代码出现异常就执行catch中的代码,不出异常就不执行catch中的代码,而finally中的代码都会执行,称为异常的窗口
- 对异常进行捕捉
classTest{
publicstaticvoid main(String args[]){
System.out.println(1);
//uncheck exception
try{
//打开文件
System.out.println(2);
int i =1/0;
System.out.println(3);
}
catch(Exception e){
e.printStackTrace();
System.out.println(4);
}
finally{
System.out.println("finally");
//关闭文件
}
System.out.println(5);
}
}
结果:
D:\work\src>javac Test.java
D:\work\src>java Test
1
2
java.lang.ArithmeticException: / by zero
at Test.main(Test.java:8)
4
finally
5
- throw的作用
- 如果一个异常java虚拟机无法判断,可以在出现异常的时候,生成一个异常对象,然后用throw+异常对象,抛出异常
classUser{
privateint age;
publicvoid setAge(int age){
if(age <0){
RuntimeException e =newRuntimeException();
throw e;
}
this.age = age;
}
}
classTest{
publicstaticvoid main(String args []){
User user =newUser();
user.setAge(-20);
}
}
结果:
D:\work\src>javac *.java
D:\work\src>java Test
Exception in thread "main" java.lang.RuntimeException
at User.setAge(User.java:6)
at Test.main(Test.java:4)
- throws的作用
- 声明一个函数有可能会出现异常
- 函数不会处理,而在调用这个函数的地方,对这个异常进行处理
classUser{
privateint age;
publicvoid setAge(int age) throws Exception{
if(age <0){
RuntimeException e =newRuntimeException("年龄不能为负数");
throw e;
}
this.age = age;
}
}
classTest{
publicstaticvoid main(String args []){
User user =newUser();
try{
user.setAge(-20);
}
catch(Exception e){
System.out.println(e);
}
}
}
结果:
D:\work\src>javac *.java
D:\work\src>java Test
java.lang.RuntimeException: 年龄不能为负数
时间: 2024-10-06 21:24:32