package com.smbea.demo.tryCatchFinally;

/**
 * java之finally的用法
 * @author hapday
 * @2017年2月5日 @上午12:21:16
 */
public class TryCatchFinallyDemo {

	public static void main(String[] args) {
		hasException();
		System.out.println("\n——————————————————————————————————————————————————————————————————\n");
		noneException();
		System.out.println("\n——————————————————————————————————————————————————————————————————\n");
		System.out.println(hasReturnAndNoneException());
		System.out.println("\n——————————————————————————————————————————————————————————————————\n");
		System.out.println(hasReturnAndHasException());
	}

	/**
	 * 有异常发生
	 */
	public static void hasException() {
		int divisor = 10;
		int dividend = 0;
		
		try {
			System.out.println(divisor + " / " + dividend + " = " + (divisor / dividend));
		} catch (Exception e) {
			System.out.println("这里的代码只有出现异常后执行...");
			e.printStackTrace();
		} finally {
			System.out.println("这里的代码始终执行,不论有没有发生异常或在 try 块中出现 return 语句,都不受影响...");
		}
	}

	/**
	 * 无异常发生
	 */
	public static void noneException() {
		int divisor = 10;
		int dividend = 10;
		
		try {
			System.out.println(divisor + " / " + dividend + " = " + (divisor / dividend));
		} catch (Exception e) {
			System.out.println("这里的代码只有出现异常后执行...");
			e.printStackTrace();
		} finally {
			System.out.println("这里的代码始终执行,不论有没有发生异常或在 try 块中出现 return 语句,都不受影响...");
		}
	}
	
	/**
	 * try 块中有 return 语句但是无异常
	 * @return
	 */
	@SuppressWarnings("finally")
	public static int hasReturnAndNoneException() {
		int divisor = 10;
		int dividend = 10;

		try {
			System.out.println(divisor + " / " + dividend + " = " + (divisor / dividend));
			
			divisor *= 2;

			System.out.println("divisor = " + divisor);
			
			return divisor;
		} catch (Exception e) {
			System.out.println("这里的代码只有出现异常后执行...");
			e.printStackTrace();
		} finally {
			System.out.println("这里的代码始终执行,不论有没有发生异常或在 try 块中出现 return 语句,都不受影响...");
			
			divisor *= 3;
			
			System.out.println("divisor = " + divisor);

			return divisor;
		}
	}

	/**
	 * try 块中有 return 语句但是有异常
	 * @return
	 */
	@SuppressWarnings("finally")
	public static int hasReturnAndHasException() {
		int divisor = 10;
		int dividend = 0;
		
		try {
			System.out.println(divisor + " / " + dividend + " = " + (divisor / dividend));
			
			divisor *= 2;

			System.out.println("divisor = " + divisor);
			
			return divisor;
		} catch (Exception e) {
			System.out.println("这里的代码只有出现异常后执行...");
			e.printStackTrace();
		} finally {
			System.out.println("这里的代码始终执行,不论有没有发生异常或在 try 块中出现 return 语句,都不受影响...");
			
			divisor *= 3;
			
			System.out.println("divisor = " + divisor);

			return divisor;
		}
	}
}

更多相关文章

  1. 如何修改代码,使其仅打印单元格E和F?
  2. Java常量表达式相关的编译优化代码
  3. java代码获知该方法被哪个类、哪个方法、在哪一行调用
  4. 我的构建可以规定我的代码覆盖范围永远不会变得更糟吗?
  5. 我在Java中组织这些if语句时遇到了很多麻烦
  6. 如何判断用户的java代码是否已成功编译?
  7. 如何获得嵌入式Jetty Web服务器来转储其JSP的临时Java代码
  8. 急求用jersey2.x+spring3.x 开发rest webservice Java代码实例
  9. “java.exe”已退出,代码为 1。

随机推荐

  1. Android发展史(Android各版本特性-知识篇)
  2. Android简明开发教程二十四篇及示例代码
  3. android:visibility中"invisible"与"gone
  4. activity的android:name类名的简写方式
  5. 从头到尾给你讲明白Android(安卓)View实
  6. Android解析ClassLoader(二)Android中的Cla
  7. 【Android 开发】: Android 消息处理机制
  8. Android的NDK开发步骤
  9. Android音乐播放器汇总贴
  10. Android 去掉 Launcher3 里面默认的Googl