我是靠谱客的博主 标致音响,这篇文章主要介绍Java异常处理的方式汇总1、异常捕获2、异常抛出,现在分享给大家,希望可以做个参考。

    Java的异常处理机制,主要有两种方式:捕获和抛出。捕获是在当前函数中对产生的异常进行捕捉并处理;抛出则表示该方法对产生的异常并不直接进行处理,而是抛给上级函数处理。当然,上级函数可以进行捕获处理,也可以抛给更上一级函数。

1、异常捕获

    异常捕获相关的关键字有try、catch和finally。关键字try的语句块中存放的是可能会产生异常的代码语句;catch的语句块则是产生对应的异常后才会执行代码语句;而finally中的语句块是执行完try或catch中的代码后,必须执行的部分。try和catch是必须的,而finally部分可以没有。我们通常在finally执行关闭IO、关闭数据库连接等操作,以确保在发生异常后这些资源依然能够得到释放。

1.1 try...catch...

    try...catch...是最基础的异常捕获组合。示例:

复制代码
1
2
3
4
5
6
7
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的释放等。示例:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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块分别处理不同的异常。这种一般用在对产生的不同异常需要执行不同的处理操作的时候。示例:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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接口的对象,都可以作为资源来使用。示例:

复制代码
1
2
3
4
5
6
7
8
9
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抛给上层函数。示例:

复制代码
1
2
3
public int divide(int dividend, int divisor) throws Exception{ return dividend/divisor; }

2.2 throw

    throw用在方法体的内部,后面加一个异常的实例。一般是和分支语句结合使用,表示特定分支是不被允许的。示例:

复制代码
1
2
3
4
5
6
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异常处理内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(104)

评论列表共有 0 条评论

立即
投稿
返回
顶部