Java中的异常
- 什么是异常
- 异常的分类
- try…catch…finally结构的使用方法
1. 什么是异常?
异常(Exception):中断了正常指令流的事件。
异常是一个对象;
异常产生于程序运行时;
指令流:程序执行时一系列的连续指令称为指令流。
示例:
class Test{ public static void main(String args[]){ int i = 1 / 0; } }
抛出异常:
Exception in thread “main” java.lang.ArithmeticException: / by zero
at Test3.main(Test3.java:6)Exception in thread “main” :在主线程中出现异常;
ArithmeticException:异常的名称,算术异常;
/ by zero:被0除;
at Test.main(Test.java:3):异常位置;
2. 异常的分类
JDK提供的类:
- Throwable:所有异常的父类;
- Error:虚拟机运行时产生的错误,产生错误,虚拟机直接关闭;
- Exception: 分为UncheckExeption(RuntimeExeption)和CheckExeption
Exception类中除了 RuntimeException之外的类,都是属于checkexception
Exception
checkException
checkException是必须要处理的,也就是不能抛出,必须通过try-catch来完成,不处理的话是不能进行编译的。
示例:
class TestCheck{
public static void main(String args[]){
//CheckException
Thread.sleep(1000); //让当前线程休眠1000ms
}
}
运行结果:
uncheckException( RuntimeException)
运行时异常包括平常遇到的各种异常,如空指针异常,数据格式异常等一系列异常,这种异常是可以不捕获的,可通过throws抛出异常,交给别的代码或者JAVA虚拟机来完成
示例:
class Test{
public static void main(String args[]){
//UncheckException
int i = 1 / 0;
}
}
运行结果:
3. try…catch…finally结构
try{
//代码A
//有可能出现异常的代码B
//代码C
}
catch(Exception e){ //虚拟机产生的异常对象e
e.printStackTrace(); //处理异常的代码D
//代码E
}
finally{
//异常的出口
//执行扫尾工作的代码F
}
如果try中代码B没有异常:执行代码A-B-C-F
如果try中代码B出现异常:执行代码A-B-D-E-F
uncheckException
//uncheckException
class TestCheck{
public static void main(String args[]){
System.out.println(1);
try{
System.out.println(2);
//有可能出现异常的代码
int i = 1/0;
System.out.println(3);
}
catch(Exception e){ //虚拟机产生的异常对象e
e.printStackTrace(); //打印异常栈的追踪信息
System.out.println(4);
}
finally{
//异常的出口
System.out.println("finally");
}
}
}
运行结果:
checkException
//checkException
class TestCheck{
public static void main(String args[]){
System.out.println(1);
try{
System.out.println(2);
//有可能出现异常的代码
Thread.sleep(1000); //让当前线程休眠1000ms
System.out.println(3);
}
catch(Exception e){ //虚拟机产生的异常对象e
e.printStackTrace(); //打印异常栈的追踪信息
System.out.println(4);
}
finally{
//异常的出口
System.out.println("finally");
}
}
}
运行结果:
屏幕首先显示1,2,然后停顿1000ms,再显示3和finally
The MIT License (MIT)
Copyright (c) 2019, Roojay.
本文链接:https://roojay.com/pages/f029d2bb/