java的异常处理机制之try catch finally
生平第一次写博客,想想还有些小激动呢!
好吧,表面功夫到此为止,接下来就开始写无聊的代码啦…
首先你必须知道什么时候弄这玩意儿,什么错误能捕获什么不能
Error类代表了编译和系统的错误,不允许捕获;
Exception类包含运行异常类和非运行异常类这两个直接的子类,代表了标准Java库方法所激发的异常。
整不明白?谨记三点就行啦
1.语法错误(连编译都编译不了,不用捕获)
2.运行时异常(可以捕获)
3.系统错误(无能为力,捕获不了的)
Java的异常处理使用的5个关键字//这是你学习本节所必须了解的最基本知识
try:可能产生异常的代码
catch:出现异常后执行的代码
finally:无论是否异常都会执行
throw:手动抛出异常
throws:方法可能抛出的异常
执行的流程如下图所示
一脸懵逼看不懂?说简单点就是try{}里写可能出错的语句,catch{}里写出错后执行的语句(一般就是提示语句,提示你这里出错啦,仅此而已),如果你有一些语句必须要执行那就写finally{}里,不管出不出错它都会执行的
package demon01;
//异常处理机制
public class Test {
public static void main(String[] args) {
int a[]={1,2,3,4,5};//先定义一个数组用于实验(数组下标越界)
//进入异常处理机制
try{
System.out.println(a[5]);//出错点,数组下标越界错误
System.out.println("能输出此信息说明没有出错");/*因为如果上条语句错了的话这条语句就被跳过了输出不了,所以
说这条能输出就代表没有出错*/
}
catch(Exception Yang){
System.out.println("输出此信息说明出错啦");//出错了才会执行catch里的语句
}
finally {
System.out.println("不管错不错都会输出");
}
//异常处理机制结束
System.out.println("帅的无法无天");//这条语句是为了证明程序继续向下执行
}
}
相应的注释我已经写在代码里了,应该都能看懂吧
然后就有人想问啦,那try挺好写,catch小括号里的是啥玩意儿啊
先来看下Java异常类的结构图(这图是我盗的啊,不要在意?)
Exception Yang就是定义一个Exception类叫Yang
其实catch的小括号里写的就是Java自带的类,每个错误都能对应到一个类,发现的
错误类型和你定义的类的类型匹配才算捕获到错误。新手不懂这些错误是什么类型
怎么办?没关系,Exception是整个异常层次结构的父类,不知道的时候选他就对了!
当然你也可以写好几个捕获(多路捕获)感觉就跟switch中的case语句差不多,匹配
到相应的错误,输出相应的提示信息
搞不懂没关系,新手平常使用一个Exception绝对够用了
写的挺长了,throw和throws下次再写吧
特别注意
▢try不能单独使用
▢try块中出现异常;异常后面的代码将不再执行
▢无论是否出现异常,finally块都将执行,即使try中return;finally块也会执行,finally不执行的唯一情况,强制终止程序运行System.exit(1);