概述
Java的异常处理机制,主要有两种方式:捕获和抛出。捕获是在当前函数中对产生的异常进行捕捉并处理;抛出则表示该方法对产生的异常并不直接进行处理,而是抛给上级函数处理。当然,上级函数可以进行捕获处理,也可以抛给更上一级函数。
1、异常捕获
异常捕获相关的关键字有try、catch和finally。关键字try的语句块中存放的是可能会产生异常的代码语句;catch的语句块则是产生对应的异常后才会执行代码语句;而finally中的语句块是执行完try或catch中的代码后,必须执行的部分。try和catch是必须的,而finally部分可以没有。我们通常在finally执行关闭IO、关闭数据库连接等操作,以确保在发生异常后这些资源依然能够得到释放。
1.1 try...catch...
try...catch...是最基础的异常捕获组合。示例:
public int divide(int dividend, int divisor) {
try {
return dividend/divisor;
}catch (Exception e) {
return 0;
}
}
1.2 try...catch...finally...
try...catch...finally...组合,一般用来在finally中用来释放一些同步的资源,例如IO流的关闭、数据库连接的释放、同步锁Lock的释放等。示例:
BufferedReader configReader = null;
try{
configReader = new BufferedReader(new FileReader(filePath));
String line;
StringBuffer content = new StringBuffer();
while ((line = configReader.readLine()) != null) {
content.append(line);
}
}catch (IOException e) {
e.printStackTrace();
}finally {
try {
configReader.close();
}catch (IOException e) {
e.printStackTrace();
}
}
1.3 try...catch...catch...(finally...)
多个catch表示对异常的多重捕获,可以每个catch块分别处理不同的异常。这种一般用在对产生的不同异常需要执行不同的处理操作的时候。示例:
BufferedReader configReader = null;
try{
configReader = new BufferedReader(new FileReader(filePath));
String line;
int count = 0;
while ((line = configReader.readLine()) != null) {
if (!line.equals(contents.get(count))) {
System.out.println(false);
}
}
}catch (IOException e) {
System.out.println("can't read from this file!");
}catch (IndexOutOfBoundsException e) {
System.out.println("index is out of bounds!");
}finally {
try {
configReader.close();
}catch (IOException e) {
e.printStackTrace();
}
}
1.4 try with resource
JDK 1.7定义的一种try catch的语法,用来自动关闭资源,减少在finally中使用try catch关闭资源造成的代码过长的问题。try的语法是在try后面的小括号中定义资源,这些资源会在try catch执行完毕后被自动回收。任何实现了java.lang.AutoCloseable或者java.io.Closeable接口的对象,都可以作为资源来使用。示例:
try(BufferedReader configReader = new BufferedReader(new FileReader(filePath))){
String line;
StringBuffer content = new StringBuffer();
while ((line = configReader.readLine()) != null) {
content.append(line);
}
}catch (IOException e) {
e.printStackTrace();
}
2、异常抛出
异常抛出相关的关键字有throw和throws。
2.1 throws
throws用在方法签名的尾部,后面会加一个被抛出的异常类型。throws的作用范围是整个方法体,即整个方法的任何部分产生了不被捕获的指定类型的异常,都会被throws抛给上层函数。示例:
public int divide(int dividend, int divisor) throws Exception{
return dividend/divisor;
}
2.2 throw
throw用在方法体的内部,后面加一个异常的实例。一般是和分支语句结合使用,表示特定分支是不被允许的。示例:
public int divide(int dividend, int divisor){
if (divisor == 0) {
throw new Exception("divisor can't equal 0!");
}
return dividend/divisor;
}
最后
以上就是标致音响为你收集整理的Java异常处理的方式汇总1、异常捕获2、异常抛出的全部内容,希望文章能够帮你解决Java异常处理的方式汇总1、异常捕获2、异常抛出所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复