黑马程序员技术交流社区

标题: 异常处理 [打印本页]

作者: alexchy    时间: 2014-8-25 12:26
标题: 异常处理

java中的 常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。在API可以看到Exception中,有很多已知的子类,比较常见的有:ApplicationException, AWTException,DataFormatException, ClassNotFoundException,RuntimeException,SQLException, RuntimeException...... 等等,很多.

        其中RuntimeException是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。
RuntimeException是可以有异常但是不需要抛出或者捕捉、包括它的任何子类都无需去捕捉。例如我们比较常见的IndexOutOfBoundsException, NullPointerException,....等等。


下面通过FileReader和FileWriter实现文件的复制功能,并实现处理运行中出现的异常。。


import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class JavaException {


/**
  * Java的IO异常处理
  */
public static void main(String[] args) {
  //为什么在try外面写,是因为在finally里面要使用,否则是访问不到的
  FileWriter fileWriter=null;
  FileReader fileReader=null;
  try {
   //创建一个写文件对象,如果文件不存在的话,他会自己创建一个文件,如果文件已经存在则会被覆盖
   fileWriter=new FileWriter("D:\\java.txt");
   //这里的目录路径出现两个反斜杠是因为在字符串中,的反斜杠需要转义的转义之后才是反斜杠
   fileReader=new FileReader("D:\\eclipse\\workspace\\Demo\\src\\test.java");
   
   //顶一个字符数组,因为FileReader是一个处理字符的流的对象
   char[] buffer=new char[1024];
   int len=0;
   //把数据读取到char数组中,因为filereader读取到结尾时,返回值为-1;所以用while循环作为条件
   while((len=fileReader.read(buffer))!=-1)
   {
    //把数据从字符数组的开始到结束位写入到D:\\java.txt的文件中
    fileWriter.write(buffer, 0, len);
   }
   
   
  } catch (IOException e) {
   //在控制台输出捕获到的异常
   System.out.println(e.toString());
  }
  finally
  {
   /**
    * 最后在finally里面关闭流,释放资源
    */
   
   /*
    * 这里为什么要判断他是否为空,因为如在try中发生异常,fileReader对象是null的,在这里如果不判断,
    *直接关闭流的话,可能出现空指针异常
    */
   if(fileReader!=null)
   {
    try {
     fileReader.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
   
   
   if(fileWriter!=null)
   {
    try {
     fileWriter.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  }

}

}




作者: 王责彬    时间: 2014-8-25 14:35
我是来学习学习的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2