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

概述

    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、异常抛出所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部