/**
* @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");
}
}