首页 > 其他分享 >39-异常处理机制

39-异常处理机制

时间:2023-02-09 19:34:55浏览次数:39  
标签:39 void throw println catch 机制 异常 public

抛出异常

捕获异常

异常处理五个关键字

try、catch、finally、throw、throws

package com.exception;

public class Demo01 {
    public static void main(String[] args) {
       int a = 1;
       int b = 0;
        try {                               //try 监控区域
            System.out.println(a/b);
        } catch (ArithmeticException e) {   //catch() 捕获异常,参数为想要捕获的异常类型
            System.out.println("b不能为0");   //捕获到后会执行这里
        }
        finally {                            //finally 处理善后工作
        }                                    //可以不要
    }

假设要捕获多个异常,增加catch(){}代码块,参数范围从小到大

package com.exception;

public class Demo02 {
    public static void main(String[] args) {
        try {
            new Demo02().a();
        } catch (StackOverflowError e) {
            System.out.println("捕获成功");
        } catch (Error e){
            System.out.println("捕获成功2");
        } catch (Throwable e){
            System.out.println("捕获成功3");
        }
        finally {
        }
    }

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

选中需要catch的代码,用ctrl+alt+T,直接生成try 、catch、finally

方法内可以用throw抛出异常

package com.exception;

public class Demo03 {
    public static void main(String[] args) {
        new Demo03().test(1,0);
    }

    public void test(int a,int b){
        if(b==0){
            throw new ArithmeticException(); //主动抛出的异常,一般在方法内使用,无论下面是否计算,都会根据if条件主动抛出
        }
        System.out.println(a/b);
    }
}

方法上可以用throws抛出异常

package com.exception;

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

        new Demo03().test(1,0);
        
    }

    public void test(int a,int b) throws ArithmeticException {

        System.out.println(a/b);
    }
}

throw和throws的区别如下:

位置不同:throws作用在方法上,后面跟着的是异常的类;而throw作用在方法内,后面跟着的是异常的对象。
功能不同:throws用来声明方法在运行过程中可能出现的异常,以便调用者根据不同的异常类型预先定义不同的处理方式;throw用来抛出封装了异常信息的对象,程序在执行到throw时后续的代码将不再执行,而是跳转到调用者,并将异常信息抛给调用者。也就是说,throw后面的语句块将无法被执行(finally语句块除外)。

标签:39,void,throw,println,catch,机制,异常,public
From: https://www.cnblogs.com/PedroPascal/p/17106776.html

相关文章

  • 40-自定义异常
    使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需继承Exception类即可。在程序中使用自定义异常类,大体......
  • drf 断点调试,认证权限频率源码分析,基于APIView编写分页,异常处理
    昨日回顾#1认证的使用-有些接口需要登陆后才能访问-原生django如何使用的认证:auth的user表,auth自带了认证-自己登录,使用自定义的用户表-认证......
  • Telegram 更新后字体异常解决办法
    最近更新了Telegram后,界面字体又跟当初一样变为了宋体,看着十分难受:然后以前注入dll的办法也不好使了,找了一圈后发现可以通过修改注册表解决把以下代码存为后缀名.r......
  • java8 lambda 求list最大值、最小值、平均值、求和、中位数、属性排序(空指针异常,空值
    java8lambda求list最大值、最小值、平均值、求和、中位数、属性排序(空指针异常,空值排前、排后)、去重importorg.junit.Test;importjava.text.SimpleDateFormat;im......
  • 深度复盘-重启 etcd 引发的异常
    作者信息:唐聪、王超凡,腾讯云原生产品中心技术专家,负责腾讯云大规模TKE集群和etcd控制面稳定性、性能和成本优化工作。王子勇,腾讯云专家级工程师,腾讯云计算产品技术......
  • 异常的抛出与捕获
    publicclassText{publicstaticvoidmain(String[]args){inta=1;intb=0;//假设要捕获多个异常:从小到大(Throwable>Exception,Error)......
  • RPC框架的负载均衡机制解析
    1需求流量高峰,突现线上服务可用率降低,排查发现,因为其中有几台机器较旧。当时最早申请的一批容器配置较低,缩容时留下了几台,当流量达到高峰时,这几台容器由于负载太高,扛不住压......
  • Appium 启动报错“ Could not find 'apksigner.jar' ”
    问题描述:Appium服务启动提示coundnotfind 'apksigner.jar'  定位问题: 通过上面的报错信息可知,问题在于AndroidSDK的目录下缺失apksigner.jar解决问题:1、......
  • jrtplib can't retrieve login name解决方案
    ​场景     armlinux版本程序启动调用jrtplib报错如上,导致建立rtpsession失败原因分析​RTPSession::CreateCNAME这个函数会从系统调用里获取登陆名称,然后填充R......
  • html全局异常捕获
    全局异常捕获:前端资源会出现加载失败问题,如何捕获了?图片加载失败,如何优化显示错误了?在vue中:<script>mounted(){//或者指定局部的:this.$refs.div1.addEventListene......