Java异常处理之try-catch-finally

/**
 * @author Administrator
 * 功能:异常
 */
package com.test;

import java.io.*;
import java.net.*;
public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //检查异常编译器实现可以判断的异常1.打开文件
        //要是找不到怎么办呢
        //FileReader fr = new FileReader("D:\\aa.txt");
        //2. 连接一个192.168.12.12 ip的端口号4567
        //cmd下tracert追踪路由器
        //cmd下查看路由表route  或者route print
        //cmd下netstat -an命令查看谁练过来了
        
        //2. 连接一个192.168.12.12 ip的端口号4567
        //unknown host 检查异常
        //Socket s = new Socket("192.168.1.123",78);
        
        //运行异常
        //除0
        //int a = 4/0;
        //int b = 6/0;
        //数组越界异常
        //int arr[] = {1,2,3};
        //System.out.println(arr[234]);
        
        //外部环境异常
        
        //异常和error有什么区别
        //try catch捕获处理 或者抛出异常让调用你的上一层去处理
        
        //异常处理
//        try {
//            FileReader fr = new FileReader("D:\\aa.txt");
//            
//        } catch (Exception e) {
//            //catch (Exception e)为最大捕获
//            // TODO: handle exception
//            //把异常的信息输出,利于排除bug
//            e.printStackTrace();
//        }
        //先进入应该被catch住的异常的入口块执行
        FileReader fr = null;

        try {
            fr = new FileReader("D:\\bb.txt");
            System.out.println("go on");
            Socket s = new Socket("192.168.1.123",78);
            //后面的不执行,在出现异常的地方就终止执行代码,然后进入到catch语句
            //如果你有多个catch语句,则进入匹配的异常的那个catch块 执行        
    } catch (FileNotFoundException e1) {
        //认为是什么异常就捕获什么异常,时最小捕获,FileNotFoundException为最小捕获
        // TODO: handle exception
        //把异常的信息输出,利于排除bug
        System.out.println("测试");
        e1.printStackTrace();
        //处理
    } catch (IOException e2) {
            // TODO: handle exception
            e2.printStackTrace();
            //System.out.println("message="+e2.getMessage());
            //执行该句系统异常退出后,finally将不会被执行
            //System.exit(-1);
    //处理
    }finally{//finally块一定会被执行
        System.out.println("进入finally");
        //这个语句块,不管有没有异常,都会被执行
        //一般说,把需要关闭的资源,[文件,连接,内存 ]
        if(fr != null)//之前定义时null不等于null表示已打开
        {
            //首先关闭文件关闭时也会抛异常
            try {
                    fr.close();
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
    }        
        System.out.println("OK");        
    }
}

 

posted on 2016-04-02 16:48  让编程成为一种习惯  阅读(281)  评论(0编辑  收藏  举报