首页 > 其他分享 >08.异常机制

08.异常机制

时间:2024-05-05 20:56:11浏览次数:21  
标签:08 System println catch 机制 异常 public out

1.什么是异常

简单分类

  • 检查性异常:最具代表的是用户错误或问题引起的异常,无法预见。如要打开一个不存在文件时。
  • 运行时异常:运行时异常是可能被程序员避免的异常。
  • 错误:错误不是异常,而是脱离程序员控制的问题。

2.Java 异常处理机制

Application.java

public class Application {
    public static void main(String[] args) {

        new Application().test(1,0);
        /*int a = 1;
        int b = 0;
        //假设要捕获多个异常,从小到大
        try { //try 监控区域

        }catch (Error e){ //catch(想要捕获的异常类型) 捕获异常
            System.out.println("Error");
        }catch (Exception e){ //catch(想要捕获的异常类型) 捕获异常
            System.out.println("Exception");
        }catch (Throwable e){ //catch(想要捕获的异常类型) 捕获异常
            System.out.println("Throwable");
        }finally { //处理善后工作
            System.out.println("finally");
        }*/
    }
    public void test(int a, int b){
        if (b == 0) {
            throw new ArithmeticException(); //主动抛出异常,一般在方法中使用
        }
        System.out.println(a/b);
    }
}

快捷键:Ctrl+Alt+T

3.自定义异常

继承 Exception 类
步骤:

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

MyException.java


// 自定义异常类
public class MyException extends Exception {
    //传递数字 > 10
    private int detail;

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

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

Test.java

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);
        }
    }
}

4.总结

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

标签:08,System,println,catch,机制,异常,public,out
From: https://www.cnblogs.com/luoluostudy/p/18173851

相关文章

  • P3193 [HNOI2008] GT考试 题解
    之前学矩阵乘的时候做的题,当时因为不会\(kmp\)搜索一稀里糊涂过去了,现在填个坑。头图是\(Logos\)!P3193[HNOI2008]GT考试题链:洛谷题库题目大意:求有多少个长度为\(n\)的数字串的子串中不包含给出的长度为\(m\)位的串,范围\(n<=1e9\),$m<=20$。思路:首先考虑DP,令\(......
  • 8086 汇编学习 Part 9
    端口的读写CPU的邻居CPU内部的寄存器内存单元端口(各种接口卡、网卡,显卡,主板上的接口芯片等)各种芯片工作时,都有一些寄存器由CPU读写从CPU角度,将各寄存器当端口,并统一编制CPU用统一的方法与各种设备通信读写端口的指令在对\([0,255]\)的端口进行读写时,端口......
  • 报错“ opensslErrorStack: [ 'error:03000086:digital envelope routines::initiali
    报错“ opensslErrorStack:['error:03000086:digitalenveloperoutines::initializationerror']”报错信息前端启动项目报错,报错信息如下:$yarnstartyarnrunv1.22.21$cross-envUMI_ENV=devumidevBrowserslist:caniuse-liteisoutdated.Pleaserun:npx......
  • Java(5)-双亲委派机制
    如何理解双亲委派机制双亲委派机制是Java中类加载器加载类的一种方法,可以想象一个大家庭中的孩子想要一本书来阅读:在这个家庭中,孩子会先向他的父亲(子类加载器)要这本书,如果没有这本书,他的父亲就会去向孩子的祖父(父类加载器)要这本书。这个过程会一直持续,直到到达家族中的最高辈分,......
  • mysql 锁,和加锁机制
    背景间隙锁是MySQL在RR可重复读隔离级别下用来修复幻读才引入的一种锁,间隙锁也只有在RR可重复读隔离级别下才会存在,如果是在RC读已提交隔离级别下,是没有间隙锁的存在的。另外,我们也知道,幻读这种现象也只有在当前读的时候才会发生,在一致性快照读的情况下是没有幻读现象的。那么间......
  • 08_自相关
    第8章自相关8.1自相关的后果除了异方差,违反球形扰动项的另一情形是扰动项存在自相关。定义自相关(autocorrelation)/序列相关(serialcorrelation)对于\(\{\epsilon_1,\cdots,\epsilon_n\}\),如果存在\(i\nej\),使得\(E(\epsilon_i\epsilon_j|X)\ne0\),即协方差矩阵\(Var......
  • MySQL-08.索引的创建和设计原则
    C-08.索引的创建和设计原则1.索引的声明和使用1.1索引的分类MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。从功能逻辑上分类,索引主要有4种,分别是普通索引,唯一索引,主键索引,全文索引。按照物理实现方式,索引可以分为2种,聚簇索引和非聚簇......
  • 8086 汇编学习 Part 6
    用MUL指令做乘法格式MUL寄存器MUL寄存单元8位乘法16位乘法被乘数(默认)ALAX乘数8位寄存器或内存单元16位寄存器或内存字单元结果AXDX(高位)和AX(低位)模块化程序设计调用子程序:CALL指令返回:RET指令实质流程转移指令,它们都修改......
  • Gradformer: 通过图结构归纳偏差提升自注意力机制的图Transformer
    这是4月刚刚发布在arxiv上的论文,介绍了一种名为“Gradformer”的新型图Transformer,它在自注意力机制中引入了指数衰减掩码。以下是主要创新点:指数衰减掩码: Gradformer在其自注意力模块中集成了衰减掩码。该掩码随着图结构中节点之间的距离减小而呈指数递减。这种设计使模型能够......
  • 19.3 ADG备库,数据文件SCN不更新(Bug: 29056767),导致备库异常重启后,需要重新apply很久
    故障现象:一套19.3ADG备库,备库安装完集群补丁重启后,发现需要重新apply很久以前的归档日志。分析过程:1、备库安装完补丁后,启动备库的日志恢复功能,在启动过程中报错,详细的日志如下所示。2024-04-16T18:34:40.895637+08:00BeginningStandbyCrashRecovery. Startedlogm......