java 异常的特殊的典型使用你知道吗?

package com.easyway.commons.ispace.dev.oop.exceptions;

import java.io.IOException;
/**
 * 异常的典型使用
 * @author longgangbai
 * @date 2010-5-13
 * @version 1.0
 * @since JDK6.0
 */
public class JavaException {
 /**
  * (1)当try代码块后面有多个catch代码块,java虚拟机会把实际抛出的异常对象依次
  * 和各个catch代码块生命的异常类型匹配,如果异常对象为某个异常类型或者其子
  * 类的实例,就执行这个catch代码块,而不会在执行其他的catch代码块.(备注必须注意
  * 执行异常的先后顺序)
  * (2) finally:一般用于执行必须执行的代码。但是在特殊情况可能不被执行。先执行
  * 了用于终止程序的System.exit()方法或者断电。
  * (3) return 语句用于退出本方法。在执行try或者catch代码块中的return语句中,
  * 如果有finally代码块,会先执行finally代码块。
  */
 public void method(){
  try{
   throw new IOException("out of money ");
  }catch(IOException e)
  {
   System.out.println("IOException ="+e);
  } catch(Exception e)
  {
   System.out.println("Exception ="+e);
  }
 }
 
 public int methodA(int money)throws IOException {
   if(money<0)
   {
    throw new IOException("out of money ");
   }
   return money;
 }
 /**
  * fially执行完毕才返回的return的值
  * @param money
  * @return
  */
 public int methodB(int money) {
  try {
   System.out.println("begin");
    int result=methodA(money);
    return result;
  } catch (IOException e) {
   System.out.println("exectpion  "+e.getMessage());
   return -100;
  }finally{
   System.out.println("methodB finally ");
  }
 }
 
 /**
  * finally语句不可改变的返回值的数据
  */
 public int methodC(int money) {
  try {
    return money;
  }finally{
   money=-1;
  }
 }
 
 /**
  * 备注:由于在返回return的值之前执行finally语句,故先执行finally中 的return 语句
  * @param money
  * @return
  */
 @SuppressWarnings("finally")
 public int methodD(int money) {
  try {
    return money;
  }finally{
    return -1;
  }
 }
 /**
  * 造成异常丢失的情况,必须考虑:
  * 发生异常时,先执行异常捕获,然后执行finally语句,将异常丢失了。
  * @param money
  * @return
  */
 @SuppressWarnings("finally")
 public int methodE(int money) {
  try {
    System.out.println("begin");
    int result=methodA(money);
    return result;
  } catch (IOException e) {
   System.out.println("exectpion  "+e.getMessage());
  }finally{
   System.out.println("methodB finally ");
   return -100;
  }
 }
 
 public static void main(String[] args) {
  JavaException e=new JavaException();
  System.out.println(e.methodE(-1));
 }
}

 

你可能感兴趣的:(java,虚拟机,oop)