Java –异常处理
基本概念:
当出现程序无法控制的外部环境问题(用户提供的文件不存在,文件内容损坏,网络不可用。。)时,java就会用异常对象来描述,就是将异常用对象来描述。
两种方法处理异常
1, 在发生异常的地方直接处理
2, 将异常抛给调用者,让调用者处理
这样的代码就会比较健壮,结实。
异常分类
1, 检查行异常:java.lang.Exception
程序正确,但因为外在的环境条件不满足引发。例如:程序试图打开一个并不存在的文件或者并不存在的远程Socket端口。Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。
2, 运行期异常:java.lang.RuntimeException
这就意味着程序存在Bug,如:数组越界,0被除,传入参数不满足规范。。。。。,这类异常需要更改程序来避免,java编译器强制要求处理这类异常。
3, 错误:java.lang.Error
一般很少见,也很难通过程序解决,它可能源于程序的bug,但是一般更可能元环境问题,入内存耗尽,错误在程序中无需处理,而由运行环境处理。
代码
package com.panhui;
import java.io.*;
import java.net.Socket;
public classDemo10_9_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//检查异常1.打开文件
FileReaderfr= newFileReader("d:\\aa.text");
//检查异常2,链接端口
//链接一个端口号4567,ip地址:192.168.12.12
//会报错,因为编译器认为这个ip地址端口号可能错误。
Sockets= newSocket("192.168.12.12",80);
//运行错误,编译没错。
int a
System.out.println(a);
}
}
异常处理:
1, try…..catch
2, //最大捕获
3,try{
4, //可以将所有需要异常对象写到try中。
5, FileReader fr = new FileReader("d:\\aa.text");
6, } catch (Exception e){
7, //输出异常的信息,利于排除Bug
8, e.printStackTrace();
9, }
10, //最小捕获,但是如果异常过多,那么就需要写很多的catch,一般执行完一个catch,程序就会停留在那里。
11, try{
12, FileReader fr = newFileReader("d:\\aa.text");
13, } catch (FileNotFoundException e){
14, //输出异常的信息,利于排除Bug
15, e.printStackTrace();
16, }
17,
一旦出现异常,即try执行完后,跳到catch
截图:
2,finally
18, try{
19, //可以将所有需要异常对象写到try中。
20, FileReader fr = new FileReader("d:\\aa.text");
21, } catch (Exception e){
22, //输出异常的信息,利于排除Bug
23, e.printStackTrace();
24, }finally{
25, //这个语句块,不管有没有异常,多会被执行
26, //一般说,吧需要关闭的资源。【文件,链接,开辟的内存 什么的关掉】
If(fr != null)
{
Try{
Fr.close();
} ctach(Exceptione){
e.printStackTrace();
}
}
27, }