Java 示例 - 使用 finally

  • 问题描述

    如何使用 finally 块来捕获异常?
  • 解决方案

    此示例显示如何使用 finally 块通过使用 e.getMessage() 来捕获运行时异常(非法参数异常)。
    
    public class ExceptionDemo2 {
       public static void main(String[] argv) {
          new ExceptionDemo2().doTheWork();
       }
       public void doTheWork() {
          Object o = null; 
          for (int i = 0; i < 5; i++) {
             try {
                o = makeObj(i);
             } catch (IllegalArgumentException e) {
                System.err.println("Error: ("+ e.getMessage()+").");
                return;   
             } finally {
                System.err.println("All done");
                if (o == null)
                System.exit(0);
             }
             System.out.println(o); 
          }
       }
       public Object makeObj(int type) throws IllegalArgumentException {
          if (type == 1)throw new IllegalArgumentException("Don't like type " + type);
          return new Object();
       }
    }
    
  • 结果

    上面的代码示例将产生以下结果。
    
    All done
    java.lang.Object@1b90b39
    Error: (Don't like type 1).
    All done
    
    以下是java中finally块的另一个示例示例
    
    public class HelloWorld { 
       public static void main(String []args) { 
          try { 
             int data = 25/5; 
             System.out.println(data);
          } catch(NullPointerException e) { 
             System.out.println(e);
          } finally { 
             System.out.println("finally block is always executed"); 
          } 
          System.out.println("rest of the code...");
       }
    }
    
    上面的代码示例将产生以下结果。
    
    5
    finally block is always executed
    rest of the code...