首页 > 其他分享 >Day63 异常03:自定义异常及经验小结

Day63 异常03:自定义异常及经验小结

时间:2024-01-31 20:22:16浏览次数:35  
标签:03 自定义 处理 MyException catch 异常 public

自定义异常

  • 使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。

    用户自定义异常类,只需继承Exception类即可。

  • 在程序中使用自定义异常类,大体可分为以下几个步骤:

    1. 创建自定义异常类。
    2. 在方法中通过throw关键字抛出异常对象。
    3. 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获井处理;否则在方法的声明处通过throws关键字指明要抛出给方 法调用者的异常,继续进行下一步操作。
    4. 在出现异常方法的调用者中捕获并处理异常。

MyException.java

package com.exception.demo02;

//自定义的异常类
public class MyException extends Exception{  //自定义异常类   首先通过 extends 继承 Exception类

//传递数字>10; 抛出异常
    private int detail;

    public MyException(int a) {
        this.detail = a;
    }

    //   Alt+Insert快捷键  选择toString方法

    //toString:异常的打印信息
    @Override
    public String toString() {
        return "MyException{"  + detail + '}';
    }
}

Test.java

package com.exception.demo02;

public class Test {

    //可能会存在异常的方法
    static void test(int a) throws MyException {

        System.out.println("传递的参数为:"+a);

        if(a>10){
            throw new MyException(a); //抛出异常
        }
        System.out.println("OK");

    }

    public static void main(String[] args) {

            try {
                test(11);
            } catch (MyException e) {
                System.out.println("MyException=>"+e);
            }
        }
    }


结果是:
传递的参数为:11
MyException=>MyException{11}

经验小结

  • 处理运行时异常时,采用逻辑去合理规避同时辅助 try-catch 处理
  • 在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常
  • 对于不确定的代码,也可以加上try-catch,处理潜在的异常
  • 尽量去处理异常,切忌只是简单地调用 printStackTrace()去打印输出
  • 具体如何处理异常,要根据不同的业务需求和异常类型去决定
  • 尽量添加finally语句块去释放占用的资源

平常Idea中红色波浪线提示异常的代码可以按住Alt +Enter键 提示怎么去处理

标签:03,自定义,处理,MyException,catch,异常,public
From: https://www.cnblogs.com/baixiaofan/p/18000022

相关文章

  • 空值合并运算符 '??' 与 || 比较
    空值合并运算符'??'与||比较https://zh.javascript.info/nullish-coalescing-operator或运算符||可以以与??运算符相同的方式使用。`letfirstName=null;letlastName=null;letnickName="Supercoder";//显示第一个真值:alert(firstName||lastName||nic......
  • 挂在mount报错can't read superblock修复过程
    执行mount报错can'treadsuperblock。执行xfs_repair-L报错Phase1-findandverifysuperblock...xfs_repair:error-readonly0of512bytes情况描述:    执行mount/dev/sdX/123 挂载时报错 can'treadsuperblock    进行xfs_repair-L /de......
  • SpringMVC之异常处理器的使用
    SpringMVC的异常处理器是处理控制器方法执行过程出现的异常。SpringMVC提供了一个处理异常的接口HandlerExceptionResolver。HandlerExceptionResolver接口有两个实现类:DefaultHandlerExceptionResolver实现类和SimpleMappingExceptionResolver实现类。DefaultHandlerExcepti......
  • Java调用ChatGPT(基于SpringBoot和Vue)实现连续对话、流式输出和自定义baseUrl
     源码及更详细的介绍说明参见Git上的README.md文档https://github.com/asleepyfish/chatgpt本文Demo(SpringBoot和Main方法Demo均包括)的Git地址:https://github.com/asleepyfish/chatgpt-demo流式输出结合Vue前端的Demo的Git地址:https://github.com/asleepyfish/chatg......
  • easyui-datagrid 加载数据 方法二 ( 自定义返回值 json方式)
    效果图 html部分<tableclass="my_table"><tr><tdclass='my_dt_label'>主叫号码:</td><tdclass='my_dt_field'><inputtype='text'id='select_callerid&......
  • Debug: ERROR: Directory '*py3-none-any.whl' is not installable. Neither 'setup.
    [ERROR:Directory'*py3-none-any.whl'isnotinstallable.Neither'setup.py'nor'pyproject.toml'found.]kubectllgostrainer-pod-name-nkubeflow-->,pipeline_info=id:"detect_anomolies_on_wafer_tfdv_schema"......
  • kettle Redhat7连接资源库报错No more handles [MOZILLA_FIVE_HOME=''] (java.lang.Un
    今天把kettle7.1放到redhat7上运行,发现在连接资源库的时候会报一个错误,就是标题的错误。本来是想在windows上用kettle工具创建了一些job和trans打算迁移到linux上去执行,或者到任意机器上执行,突然想到这些kettle文件的还会存在迁移的问题,因为在job和trans文件里的数据库连接信息都......
  • Invalid character ( found Illegal strategy name: 'Vivado Synthesis Defaults(2)'
    出现问题的操作步骤:Tools---settings---啥也没改,点击ok或者apply就会弹出这个错误,如下图: 解决方法: 在4数字标的输入框里输入1,回车之后这个问题就消失了。可能是不知道啥时候动点了什么,导致了这个问题,比较像是Vivado的Bug。本来都打算重装vivado了,还好随便试了一下解决了。......
  • 洛谷题单指南-暴力枚举-P1036 [NOIP2002 普及组] 选数
    原题链接:https://www.luogu.com.cn/problem/P1036题意解读:题目即要在n个数中,枚举出所有的子集,当子集中数字个数刚好为k时,求和,判断是否是素数。解题思路:方法一:二进制法通过二进制法,可以枚举一个集合中所有元素“选”或者“不选”的情况,用二进制1表示选该元素,二进制0表示不选。......
  • OGG-00303 Problem at line 37. Expecting file, table, or record definition: TimeZ
    由于源端和目标端表结构不一致(列顺序有差异),因此使用def文件来同步。在源端配置好def文件后,启动复制进程报错,具体信息如下:2024-01-3111:24:16ERROROGG-00303OracleGoldenGateDeliveryforOracle,r_bszj.rp:Problematline37.Expectingfile,table,orrecorddefin......