java中的异常理解

发布于:2023-01-16 ⋅ 阅读:(335) ⋅ 点赞:(0)

一艘没有航向的船,不管什么方向的风都是逆风。

1、什么是异常:

异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。

2、什么是异常处理:

java编程语言使用异常处理机制为程序提供了错误处理的能力

3、java中如何进行异常处理:

Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws

try-->执行可能产生异常的代码

catch-->捕获异常

finally-->无论是否发生异常,代码总是可以执行

throws-->声明异常,声明方法可能要跑出的各种异常

throw-->抛出异常,手动抛出异常

4、try-catch捕获异常的三种情况:

第一种情况:正常

public void method(){
    try{
        //代码段(此处不会产生异常)
    }catch(异常类型ex){
        //对异常进行处理的代码段
    }
    //代码段
}

第二种情况:出现异常

public void method(){
    try{
        //代码段1
        //产生异常的代码段2
        //代码段3
    }catch(异常类型ex){
        //对异常进行处理的代码段4
    }
    //代码段5
}

第三种情况:异常类型不匹配

public void method(){
    try{
        //代码段1
        //产生异常的代码段2
        //代码段3
    }catch(异常类型ex){
        //对异常进行处理的代码段4
    }
    //代码段5
}

5、异常对象常用的方法:

方法 说明
void printStackTrace() 输出异常的堆栈信息
String getMessage() 返回异常信息描述字符串,是printStackTrace()输出信息的一部分

6、常见的异常类型:

异常类型 说明
Exception 异常层次结构的父类
ArithmeticException 算术错误情形,如以零作除数
ArrayIndexOutOfBoundsException 数组下标越界
NullPointerException 尝试访问 null 对象成员
ClassNotFoundException 不能加载所需的类
IllegalArgumentException 方法接收到非法参数
ClassCastException 对象强制类型转换出错
NumberFormatException 数字格式转换异常,如把"abc"转换成数字

7、try-catch-finally

public void method(){
         try {
               // 代码段 1
              // 产生异常的代码段 2
          } catch (异常类型 ex) {
              // 对异常进行处理的代码段3
               return;
          }finally{
                // 代码段 4
          }
}

当try结构中的代码产生的异常,catch结构不能处理,依然会中断程序的执行,但是我希望不管产生的异常能不能处理,“程序执行完毕”这行代码都会输出 在catch结构后面添加一个finally语句块,不管前面的异常有没有处理,finally语句块中的代码都会执行。 finally语句块中的代码唯一不执行的情况是在前面的try结构或者catch结构中存在退出系统的语句System.exit(1)。

8、throw与throws

throw throws
生成并抛出异常 声明方法内抛出了异常
位于方法体内部,可作为单独语句使用 必须跟在方法参数列表后面,不能单独使用
抛出一个异常对象,且只能是一个 声明抛出异常类型,可以跟多个异常

例子:

public class Student {
    private String gender;
​
    public Student() {
        super();
    }
​
    public Student(String gender) {
        super();
        this.gender = gender;
    }
​
    public String getGender() {
        return gender;
    }
​
    public void setGender(String gender) throws Exception {
        this.gender = gender;
        throw new Exception("性别只能为男或者女");
    }
}

测试类:

public class Test {
​
    public static void main(String[] args) {
        /*当我们调用一个声明了异常的方法(构造方法和普通方法),我们需要去解决这个方法声明的异常,有两种方法解决:
        1)继续进行声明,谁调用谁继续声明,main方法声明的异常由Java虚拟机来处理
        2)调用产生了异常的方法,可以进行try-catch处理
    */
    
        try {
            FileInputStream fis = new FileInputStream("D://笔记//8.9.txt");
        } catch (FileNotFoundException e) {
            
            e.printStackTrace();
        }
        
        Student stu = new Student();
        try {
            stu.setGender("男");
        } catch (Exception e) {
            
            e.printStackTrace();
        }
​
    }
​
}

本文含有隐藏内容,请 开通VIP 后查看