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

截图:

javanew多了容易有什么问题 java有问题怎么办_java

javanew多了容易有什么问题 java有问题怎么办_异常处理_02

 

 

2,finally

 

 

javanew多了容易有什么问题 java有问题怎么办_javanew多了容易有什么问题_03

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,               }