异常:
指的是
Exception
,
Exception
类, 在
Java
中存在一个父类
Throwable
(可能的抛出)
Throwable存在两个子类:
1.Error
:表示的是错误,是
JVM
发出的错误操作
,
只能尽量避免,无法用代码处理。
2.Exception
:一般表示所有程序中的错误,所以一般在程序中将进行
try…catch
的处理。
try+catch的处理流程:
1. 当代码出现异常时,系统会自动生成一个异常类的实例化对象;
2. 如果异常发生在try语句,则会自动找到匹配的catch语句执行,如果没有在try语句中,则会将异 常抛出;
3.所有的catch根据方法的参数匹配异常类的实例化对象,如果匹配成功,则表示由此catch进行处理。
处理异常的格式:
try{
//
有可能发生异常的代码段
}catch(
异常类型
1
对象名
1){
//
异常的处理操作
}catch(
异常类型
2
对象名
2){
//
异常的处理操作
} ...
finally{
//
异常的统一出口
}
注意:
在进行异常的处理之后,在异常的处理格式中还有一个
finally
语句,那么此语句将作为异常的统一出口,不管是否产生
了异常,最终都要执行此段代码。
finally语句能不能不执行?
finally语句是可以不执行的,如电脑重启,内存满了,停电等外部条件不能满足代码运行时,就不运行finally语句;在代码中唯一不运行finally语句的情况是,在运行finally之前直接退出JVM,
通过代码退出 JVM:System.exit(0);因为Java文件运行都必须通过JVM编译成.class文件,JVM不编译所有代码均不能执行
。
try-catch-finally 中哪个部分可以省略?
答:
catch
和
finally
可以省略其中一个 ,
catch
和
finally
不能同时省略
注意
:
格式上允许省略
catch
块
,
但是发生异常时就不会捕获异常了
,
在开发中也不会这样去写代码。
try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
答:
finally
中的代码会执行
详解:
执行流程:
1.
先计算返回值, 并将返回值存储起来, 等待返回
2.
执行
finally
代码块
3.
将之前存储的返回值, 返回出去;
throws关键字:
throw关键字表示在程序中人为的抛出一个异常,因为从异常处理机制来看,所有的异常一旦产生之后,实际上抛出RuntimeExcepion
与
Exception
的区别 的就是一个异常类的实例化对象,那么此对象也可以由throw直接抛出。
throws关键字格式:
返回值 方法名称()throws Exception{
}