异常try catch finally
异常:不正常,代码出现编译或运行时的错误
Throwable(最顶层)
Error:出现的不能够处理的严重问题
Exception:可以处理的问题
异常分类:
运行时异常:RuntimeException的子类,可以选择处理或者不处理
编译时异常:在编译时期必须处理,捕获或者抛出
如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行并且还终止了程序,异常后面的代码将不在执行
捕获异常
执行顺序:首先执行try语句,如果发现异常,异常下面的代码不在执行,直接跳入catch语句结束,整个try...catch结束
如果没有发现异常,try语句执行结束后,整个try...catch结束,不再执行catch
多个catch之间的顺序:
多个catch之间可以有多个子父类,平级之间没有顺序关系;如果有父类,父类必须放在最后面
包住 +右键+Surround With+Try/catch Block
finally:一定执行,用于释放资源,收尾工作
try {//需要被检测的语句。
}
catch(异常类 变量) { //参数。//异常的处理语句。
}
finally {//一定会被执行的语句。
}
抛出异常:当我们没能力处理异常就抛出异常,可以抛出它的父类
关键字是throws 谁调用方法谁抛出异常
主方法抛出异常,jvm虚拟机帮我们抛出异常
throw:制造异常,并且结束方法
如果抛出(throw)的是编译时期异常,必须在方法声明处抛出(throws)
自定义异常:写一个类去继承Exception或者RuntimeException,然后实现多个构造方法
右键+Source+Generate Constructors from Superclass
Throwable常用方法:
String getMessage() 返回此 throwable 的详细消息字符串
String toString() 返回此 throwable 的简短描述
void printStackTrace() 打印异常的堆栈的跟踪信息
public class ExceptionDemo4 {public static void main(String[] args) {try {System.out.println(2 / 0);} catch (ArithmeticException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void method() {try {System.out.println(2 / 0);} catch(ArithmeticException e) {//String getMessage() : 原因//System.out.println(e.getMessage());//String toString() 类型和原因//System.out.println(e.toString());//void printStackTrace():类型原因和位置e.printStackTrace();}//System.out.println("hello");}
}
标签:
相关文章
-
无相关信息