【Java异常】(简简单单拿捏)

1. 异常的简单介绍

程序员在运行代码时会遇到很多异常,比如:数组越界异常,空指针异常。

我们可以将异常分为两个部分:

编译时异常 在程序编译时发生的异常
运行时异常 在程序运行时发生的异常

2. 异常的抛出

2.1 语法

throw new XXXException("异常产生的原因")

注意事项

  1. throw 必须写下方法体内部
  2. 抛出的对象必须是Exception或者Exception的子类对象
  3. 如果抛出的是RunTimeException 或者RunTimeException的子类,则可以不用处理,直接交给JVM处理
  4. 如果抛出的是编译时异常,用户必须处理,否则无法通过编译
  5. 异常一旦抛出,后续代码将不会执行

3. 异常的处理

异常的具体处理方式,主要有两种:异常声明throw以及try-catch捕获处理

3.1 异常声明throws

当方法抛出编译时异常,用户不想处理异常,此时就可以将异常借助throw抛出给方法的调用者来处理。即当前方法不处理异常,提醒方法的调用者处理异常。

声明的语法:

修饰符 返回值类型 方法名(参数列表)throw 异常类型1,异常类型2…{

}

例题

public class Main {
    
    
    public static void func(String password) throws Exception{
    
    
        //判断密码是否正确,不正确则抛出异常
        if(!password.equals("llll")){
    
    
            throw new Exception("密码错误");
        }

    }
    public static void main(String[] args) throws Exception {
    
    
       //异常的声明
        func("lll");
    }
}

上述代码运行时抛出异常
在这里插入图片描述

3.2 try-catch捕获并处理

throws对异常并没有真正地处理,而是将异常报告给抛出异常方法的调用者,由调用者处理。如果真要对异常处理,就需要try-catch。

try-catch的语法格式

try{
    
    
//将可能会出现异常的代码放这里
}catch(要捕获的异常类型 e){
    
    
//如果try中代码抛出异常了,并且和catch捕捉的异常类型一致,或者是catch捕捉到的异常是try中抛出异常的基类时,就会被捕捉到
//对异常进行处理,处理完成后跳出try-catch结构,继续进行后续的代码
}catch(要捕获的异常类型 e){
    
    
//对异常进行处理
}finally{
    
    
//代码一定会被执行
}

4. 例子(try-catch+自定义异常)

这里的例子直接和自定义异常一起讲了呦

首先了解一下自定义异常:
我现在要检查输入的账号和密码是否出现异常,所以我先分别创建AccentException和PasswordException,
然后让上述两个自定义异常继承Exception

代码操作如下所示

public class AccentException extends Exception{
    
    
    public AccentException() {
    
    
        super();
    }

    public AccentException(String message) {
    
    
        super(message);
    }
}
public class PasswordException extends Exception{
    
    
    public PasswordException() {
    
    
        super();
    }

    public PasswordException(String message) {
    
    
        super(message);
    }
}

创建完我们的自定义异常,我们就可以使用try-catch来抛出自定义异常,具体操作如下所示

public class Demo {
    
    
    public static void people(String account,String password)throws AccentException,PasswordException{
    
    

        if(!account.equals("111112")){
    
    
            throw new AccentException("账号异常");
        }
        if(!password.equals("dddddd")){
    
    
            throw new PasswordException("密码错误");
        }
        System.out.println("登录成功");


    }
    public static void main(String[] args) throws PasswordException, AccentException {
    
    
        try{
    
    
            people("11","kk");
        }catch(AccentException e){
    
    
            e.printStackTrace();
        }catch (PasswordException e){
    
    
            e.printStackTrace();
        }

    }
}

在这里插入图片描述

根据分析可知,上述账号和密码都出现了错误,但是结果只抛出账号异常,这里在上面也提到过,
try-catch在使用的过程中一旦抛出一个异常,直接跳出try-catch结构,所以这里只抛出一个异常。

由于Java异常这一部分还挺简单的,所以这篇文章没有太多的图文解释,之后在下一篇顺序表中也有Java异常的使用,如果感兴趣的朋友,大家移至下一篇顺序表呦~

猜你喜欢

转载自blog.csdn.net/2401_82641862/article/details/142533497