首页 > 其他分享 >异常

异常

时间:2023-01-02 10:56:03浏览次数:30  
标签:System println catch 异常 public out

异常

ERROR 通常是灾难性的致命的错误,是程序无法控制和处理的

Exception 通常情况下是可以被程序处理的

抛出异常 - 捕获异常

五个关键字 :try catch finally throw throws

public class Test {

    public static void main(String[] args) {

        int a = 1;
        int b = 0;

        //快捷键:选择代码段 Ctrl+Alt+T 对代码块进行包装(if-else do-while try-catch等)
        //try监控区域
        try {
            //主动抛出异常,throw一般在方法中使用 -- throws在方法体之前定义,监控整个方法
            // -- throw throws 不一样!
            if (b==0){
                throw new ArithmeticException();// throw的异常也通过catch捕获
            }

            new Test().a();
            System.out.println(a/b);
            //try中出现第一个异常后的代码不被执行,而是直接跳转到catch进行捕获
        }
        //异常捕获 catch(可捕获异常类型)
        catch (StackOverflowError e){
            System.out.println("出错了,死循环导致栈溢出");
        }
        catch (ArithmeticException e){
            System.out.println("出错了,被除数不能为零");
        }
        catch (Exception e){
            System.out.println("捕获到Exception");
        }
        //范围大的异常最后捕获 -- Throwable范围最大
        catch (Throwable e){
            System.out.println("捕获到Throwable");
        }
        finally {
            System.out.println("finally");
        }
        //处理善后工作,可以不写,如果有finally则无论是否出现异常finally都会被执行
    }

    public void a() throws Exception{
        b();
    }
    public void b(){
        a();
    }
}

异常类型

自定义异常

自定义异常类必须继承(extends)父类Exception类

//自定义异常
public class MyException extends Exception{

    //传递数字 >10 判定异常
    private int detail;

    //alt+insert 创建构造器
    public MyException(String message, int detail) {
        super(message);
        this.detail = detail;
    }

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

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("异常信息:"+e); //MyException{detail=11}
        }
    }
}

标签:System,println,catch,异常,public,out
From: https://www.cnblogs.com/Ashen-/p/17019552.html

相关文章

  • python 异常处理
    目录python异常处理异常机制本质try...except...try...except...except...try...except...elsetry...except...else...finally常见异常汇总和说明return语句和异常处理问......
  • C#准确抛出异常错误位置
    上一年,为了最大程度减小影响,提得最多的词是"精准防控"。程序异常处理也要做到精准,这样才能节约排查时间,降低分析难度,快速解决问题。我们经常使用try-catch捕捉异常,使用Sta......
  • 深入理解Linux内核(4)---中断和异常(x86平台)
    本文是ULKIntel80x86ARM中断通常分为同步中断(synchronous)(asynchronous)同步中断:CPUCPU异步中断:CPUIntel微处理器手册中,把同步和异步中断分别称为异常(exception)(inte......
  • JAVA零基础小白免费学习教程之异常类和Log4j
    day12_JAVAOOP课程目标1.【理解】什么是异常2.【理解】异常的体系结构3.【掌握】处理异常的方式4.【理解】自定义异常5.【理解】Log4J的作用视频:https://www.b......
  • 异常处理实例
    1、继承Python内置异常类实现自定义异常类'''继承Python内置异常类实现自定义异常类'''classShortInputException(Exception):'自定义异常类'def__init__......
  • C#异常没有错误行号的原因
    异常处理是编程中必知必会的重要内容,我们经常使用try-catch来捕获和记录异常信息的原因、位置信息,以便进行排查和解决问题。使用堆栈信息可明确抛出异常具体行号,但有时输出......
  • 【信号检测】基于LSTM实现工业机器信号数据异常检测附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • Flutter异常监控 - 壹 | 从Zone说起
    开启掘金成长之旅!这是我参与「掘金日新计划·12月更文挑战」的第3天,点击查看活动详情如果你正需要处理Flutter异常捕获,那么恭喜你,找对地了,这里从根源上给你准备了Flutt......
  • Python学习八:面向对象编程(下):异常、私有等
    文章目录​​前言​​​​一、私有化属性​​​​1.引入私有化属性​​​​2.语法(定义)​​​​3.私有属性的特性​​​​4.使用的场景​​​​5.最后小结​​​​二、......
  • 第七章《Java的异常处理》第4节:throw与throws关键字
    ​在Java的异常处理系统中,除了前面学过的try、catch和finally关键字之外,还有两个非常重要的关键字,它们分别是throw和throws。这两个关键字之间只相差一个字母,但意义却相差很......