当前位置: 首页 > article >正文

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

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

  • 1. 异常的简单介绍
  • 2. 异常的抛出
    • 2.1 语法
  • 3. 异常的处理
    • 3.1 异常声明throws
    • 3.2 try-catch捕获并处理
  • 4. 例子(try-catch+自定义异常)

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异常的使用,如果感兴趣的朋友,大家移至下一篇顺序表呦~


http://www.kler.cn/a/322818.html

相关文章:

  • 【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--完善TODO标记的代码
  • 三十九、Python(pytest框架-中)
  • 基于Springboot+Vue的中国蛇类识别系统 (含源码数据库)
  • Cursor安装Windows / Ubuntu
  • mac上使用docker搭建gitlab
  • 006.精读《Apache Paimon Docs - Concepts》
  • Python(六)-拆包,交换变量名,lambda
  • vue3中使用echarts折线图初始化只显示一条数据,其余折线根据用户点击进行显示
  • 【java】前端RSA加密后端解密
  • 外贸电商系统卷轴模式开发:技术深度解析与实践
  • 联宇集团:如何利用CRM实现客户管理精细化与业务流程高效协同
  • 解决element树形结构切换节点,form表单缓存问题
  • 如何解决跨域请求中的 CORS 错误
  • 前端大模型入门:使用Transformers.js实现纯网页版RAG(一)
  • mobaxterm、vscode通过跳板机连接服务器
  • cocosCreator 2.x 原生平台不息屏
  • 3D 模型GLTF、GLB格式文件介绍使用;FBX格式
  • 【单调栈】单调栈基础及经典案例
  • 【计算机网络 - 基础问题】每日 3 题(十九)
  • echarts地图下钻的 两种方法
  • Text-to-SQL方法研究
  • 更换硬盘后,电脑装完系统进不去?或PE能识别硬盘但开机/启动/BIOS识别不了硬盘解决办法
  • 每日一题学习笔记
  • 深入解析JVM常用参数与配置详
  • 双端之Nginx+Php结合PostgreSQL搭建Wordpress
  • 【Streamlit案例】制作销售数据可视化看板