首页 > 编程语言 >8.Java异常(后续将添加编辑)

8.Java异常(后续将添加编辑)

时间:2024-04-29 19:33:20浏览次数:28  
标签:Java 后续 MyException System println 添加 catch 异常 public

异常

最全最详细的Java异常处理机制

异常处理机制

  1. 抛出异常
  2. 捕获异常
  3. 处理异常关键字:try,catch,finally,throw,throws;
package com.exception;

public class Text {
    public static void main(String[] args) {
        int a=1;
        int b=0;
        try {
            new Text().text(1,0);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        }
       
    }


    public void a(){b();}
    public void b(){a();}
    //假设这个方法中,处理不了这个异常,方法上抛出异常
    public void text(int a,int b)
    {
        if(b==0){
            throw new ArithmeticException();//主动抛出异常 throw 一般在方法中使用
        }
        System.out.println(a/b);
    }

}
/*
 //假设要捕获多个异常:从小到大!

        try {//try监控区域
            if(b==0){
                throw new ArithmeticException();//主动抛出异常 throw
            }
            System.out.println(a/b);
            //new Text().a();
        }catch (Exception e){ //catch捕获异常
            System.out.println("Exception");
        }catch (Throwable t){
            System.out.println("Throwable");
        }

        finally {//处理善后工作
            System.out.println("finally");
        }
        //finally 可以不要finally ,假设IO,资源,关闭!
 */

自定义异常

package com.exception.Demo02;

//继承Exception 自定义异常类
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 +
                '}';
    }
}

package com.exception.Demo02;

public class Text {
    //可能会存在异常的方法
    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{detail=11}

        }
    }

}


经验总结

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

标签:Java,后续,MyException,System,println,添加,catch,异常,public
From: https://www.cnblogs.com/zuojiawang/p/18166542

相关文章

  • bugku_ez_java_serializd
    下载附件看到依赖CC3.1,没有waf,直接CC5打了。packagecom.eddiemurphy;importorg.apache.commons.collections.Transformer;importorg.apache.commons.collections.functors.ChainedTransformer;importorg.apache.commons.collections.functors.ConstantTransformer;impo......
  • [2022DASCTF Apr X FATE 防疫挑战赛] warmup-java
    没错,还是java。我就跟java杠上了。分析先看依赖:没有啥特别的。审一下源码:IndexController.java:warmup路由下传参data,下面把十六进制转为字节直接反序列化了。看下动态代理MyInvocationHandler.java:看一下Utils的hexStringToBytes方法: 下面分析来自Java专题-简......
  • <BEA-000438> <Unable to load performance pack. Using Java I/O instead. Please en
    环境:weblogic10.3.6jdk1.6 myeclipse10.7今天升级了一下myeclipse到10.7,然后配置weblogic,启动的时候报<BEA-000438><Unabletoloadperformancepack.UsingJavaI/Oinstead.Pleaseensurethatwlntio.dll之前用myeclipse8.5没报过这个问题。后来上网看了一下,是找不到......
  • jenkins上添加项目配置
    网上配置的没找到,自己记录一个方便后续添加1.选择左上角新建任务 2.选择流水线 3.勾选丢弃旧的构建  4.填写git仓库地址 5.获取到ColonewithSSH地址,把地址gitlab.asb.com改成ip形式的 6.git授权用户,先在配置里找到需要设置的用户 添加权限 7.在项目下......
  • java 数据库编程(一)JDBC连接Sql Server数据库
    java数据库编程(一)JDBC连接SqlServer数据库一、JDBC简介java数据库连接技术(JavaDatabaseConnection,JDBC)是由java提供的一组与平台无关的数据库的操作标准,其本身由一类与接口组成,并且在操作中将按照严格的顺序执行。由于数据库属于资源操作,所以所有的数据库操作的最后必......
  • java中的代理
    目录定义好处分类静态代理示例(接口实现)例一:(海外代购)动态代理jdk动态代理(接口)CGLIB代理(继承)定义是一种设计模式,提供对目标对象另外的访问方式好处目标对象可以间接访问可以在目标对象实现的基础上,增强额外的功能,即扩展目标对象的功能不改变原有代码的前提下,可以通过代理来......
  • 【转】[Java] 防止并发的多种写法
    来自:阿里的通义灵码要确保在Java中同一方法被多个线程同时调用时,只有其中一个成功执行,可以采用几种并发控制策略。以下是几种实现方式:1.使用ReentrantLock的tryLock()importjava.util.concurrent.locks.ReentrantLock;publicclassSingletonExecution{privatesta......
  • 2-LinuxJava安装
    环境CentOS7.5Java8卸载现有JDKrpm-qa|grep-ijava|xargs-n1sudorpm-e--nodseps上传Java压缩包将jdk-8u212-linux-x64.tar文件上传到/opt/software目录中解压Java压缩包进入/opt/software目录cd/opt/software解压缩文件到指定目录tar......
  • Java方法
    基本类型和引用类型的不同对于基本类型,它的值直接保存在变量中;对于引用类型,它保存的是实际对象的地址,引用指向实际对象,实际对象中保存着内容;赋值运算符对基本类型与引用类型的作用对于基本类型,赋值运算符会直接改变变量的值,原来的值会被覆盖掉;对于引用数据类型,赋值运算符会......
  • java代码运行出现DENIED Redis is running in protected mode because protected mode
    这个错误是因为开启了保护模式,导致出错。所以需要关闭redis的保护模式。编辑redis的redis.config  注释bind127.0.0.1 、修改protected-mode为no、修改 daemonize为no然后重启redis ......