JAVA基础知识回顾-----异常补充(try-with-resources)-----随想随写

try-with-resources
1.定义:在JDK7出现的一种代替finally来关闭资源的异常处理方式
2.基本形式:

  try(resources-specification){
   //使用资源
  }

 
  解释:resources-specification声明初始化资源,可以在这里声明
多个对象,用分号隔开就好;当try语句结束时,资源会自动释放;
try-with-resources也可以不包含catch和finally语句;
  局限:并非所有的资源都可以自动关闭,只有实现了java.lang.AutoCloseable
接口的那些资源才可以自动关闭;该接口是JDK7新增的,定义了close方法;
java.io.Closeable接口继承了java.lang.AutoCloseable接口,这两个接口
被所有的流类实现,包括FileInputStream和FileOutputStream。因此在使用
流时,可以使用try-with-resources语句
ep:
 完整代码:
 

package com.ahuiby.test;

class Dog implements AutoCloseable{
 public Dog(){
  System.out.println("The Dog is created.");
 };
 
 public void init() throws Exception{
  System.out.println("The Dog is inited.");
  throw new Exception();
 }
 
 @Override
 public void close(){
  System.out.println("The Dog is closed.");
 }
  
}

class Cat implements AutoCloseable{
 public Cat(){
  System.out.println("The Cat is created.");
 };
 
 public void init() throws Exception{
  System.out.println("The Cat is inited.");
  throw new Exception();
 }
 
 @Override
 public void close(){
  System.out.println("The Cat is closed.");
 }
  
}

public class Test {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
    try(Dog d=new Dog();
     Cat c=new Cat()){
     d.init();
     c.init();
    }catch(Exception e){
     System.out.println("deal this Exception.");
    }finally{
     System.out.println("All is closed!");
    }
 }
}

  运行结果:

 The Dog is created.
 The Cat is created.
 The Dog is inited.
 The Cat is closed.
 The Dog is closed.
 deal this Exception.
 All is closed!

 
  注意:
     a)非流类必须实现AutoCloseable接口
     b)try(初始化对象)

猜你喜欢

转载自ye-wolf.iteye.com/blog/2303281