java之try catch finally

try{

}catch(Exception e){

}finally{

}

java异常处理在编程中很常见,将可能抛出异常的语句放在try{}中,若有异常抛出,则try{}中抛出异常语句之后的语句不再执行。catch (Exception e) {}抓取异常并进行处理;若无异常,catch中的语句不执行。finally{}中主要做善后工作,如资源回收。无论是否有异常抛出,finally中的语句都会执行。finally中的语句将会在异常捕获机制退出前被调用。

下面来看三个简单的例子:

例1、

	public static void test1() {
		try {
			HttpURLConnection connection = (HttpURLConnection) new URL("").openConnection();
			System.out.println("try");
		} catch (Exception e) {
			System.out.println("exception");
		} finally {
			System.out.println("finally");
		}
		System.out.println("end");
	}

	/*
	  输出:
	  exception
      finally
      end
	 */

例2、

	public static void test1() {
		try {
			HttpURLConnection connection = (HttpURLConnection) new URL("http://www.baidu.com").openConnection();
			System.out.println("try");
		} catch (Exception e) {
			System.out.println("exception");
		} finally {
			System.out.println("finally");
		}
		System.out.println("end");
	}

	/*
	  输出:
	  try
      finally
      end
	 */

例3、

	public static void test1() {
		try {
			HttpURLConnection connection = (HttpURLConnection) new URL("http://www.baidu.com").openConnection();
			System.out.println("try");
			return;
		} catch (Exception e) {
			System.out.println("exception");
		} finally {
			System.out.println("finally");
		}
		System.out.println("end");
	}

	/*
	  输出:
	  try
      finally
	 */

首先来第一个例子,HttpURLConnection connection = (HttpURLConnection) new URL("").openConnection();url地址为空,抛出异常,try中之后的语句不在执行,直接跳到catch{}中,所以输出结果中没有"try"。

第二个例子中,url可用,没有抛出异常,所以catch{}中的语句不执行,所以输出结果中没有"catch"。

在例3中,因为没有异常抛出,所以catch不执行。因为try中已经有return了,所以之后的语句不在执行。在return之前,按照异常捕获机制,在退出前将调用finally。

时间: 2024-10-12 23:42:15

java之try catch finally的相关文章

【转】case: Java中try catch finally语句中含有return语句的执行情况(总结版)

Java中try catch finally语句中含有return语句的执行情况(总结版) 有一点可以肯定,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了,这也是不建议在finally中return的原因.下面来看这几种情况. 情况一(try中有return,finally中没有return): [java] view plain copy public class TryTest{ public 

Java中try,catch,finally的用法

Java中try,catch,finally的用法,以前感觉还算熟悉,但看到一篇博文才有更深点的理解,总结网友博客如下. Java异常处理的组合方式: 1.try+catch 运行流程:运行到try块中,如果有异常抛出,则转到catch块去处理.然后执行catch块后面的语句 2.try+catch+finally 运行流程:运行到try块中,如果有异常抛出,则转到catch块,catch块执行完毕后,执行finally块的代码,再执行finally块后面的代码. 如果没有异常抛出,执行完try

JEECG&JWT异常捕获强化处理 | Java: Meaning of catch (final SomeException e)?

//从header中得到token String authHeader = request.getHeader(JwtConstants.AUTHORIZATION); if (authHeader == null) { throw new ServletException("Missing or invalid X-AUTH-TOKEN header."); } // 验证token Claims claims = null; try { claims = Jwts.parser()

Java面向对象------>try{}catch(){}异常

在整个异常处理机制中,异常在系统中进行传递,传递到程序员认为合适的位置,就捕获到该异常,然后进行逻辑处理,使得项目不会因为出现异常而崩溃.为了捕获异常并对异常进行处理,使用的捕获异常以及处理的语法格式为:try{//逻辑代码}catch(异常类名 参数名){//处理代码}在该语法中,将正常的程序逻辑代码书写在 try 语句块内部进行执行,这些代码为可能抛出异常的代码,而 catch语句中书写对应的异常类的类名,在 catch语句块内部书写出现该类型的异常时的处理代码.程序执行到 try-catc

java中try{}catch{}和finally{}的执行顺序问题

 今天我给大家讲解一下java的的错误和异常处理机制以及相关异常的执行顺序问题.如有不足的地方,欢迎批评指正~ 1.首相简单介绍一下java中的错误(Error)和异常(Exception) 错误和异常的介绍: 在java.lang软件包中有一个java.lang.Throwable类,这个类是java中所有错误和异常的超类. 在java中错误和异常的继承主要有两个: 分别为Error和Exception 这两个. Error:         是java中所有错误类的父类,就是jvm出现错误,

异常处理——Java的try catch用法

thread:线程异常是一种处理机制,它提供一种可以检查程序中的错误,返回比较有好的界面.异常不是编译时的错误,而是运行时的错误,只有运行时出错才能捕捉到.可以将错误捕捉到然后继续执行余下的代码.程序继续执行 java程序处理异常的流程: 某个语句抛出异常后,会先将异常抛给目前的函数看有没有try catch语句捕获和处理异常,如果没有则返回上一层函数继续抛出异常看有没有try catch语句,如果也没有就抛给java的jre的jvm虚拟机,然后虚拟机给出一个粗暴的处理——程序停运行.//当然如

java中try catch finally注意事项,finally在代码中什么时候运行

1.在java里函数抛出异常是需要在函数上定义的,除了runtimeException外 2.java中finally运行的位置在函数return前,其他的代码后.函数会运算完所有执行的代码,包括return里面的表达式,只是在return操作前去执行finally里面的代码.实例如下面的代码: public class Test{ public int add(int a,int b){ try { return a+b; } catch (Exception e) { System.out.

Java try、catch、finally及finally执行顺序详解(转)

1.为什么要用finally先看一个没有finally的异常处理try-catch语句:假设count为要使用到的资源,并且用完要求释放此资源.那么我们可以把释放资源的语句放到try-catch后执行,当前的程序不管是在执行完try语句块还是catch语句块,都会顺序执行到下面释放资源的语句. int count = 0; //初始化资源 try{ count++; if(count == 1) throw new Exception("Exception in try"); }cat

Java中try catch finally语句中含有return语句的执行情况

finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了,这也是不建议在finally中return的原因.下面来看这几种情况. 情况一(try中有return,finally中没有return): public class TryTest{ public static void main(String[] args){ System.out.println(test()); } private static