首页 > 编程语言 >Java的异常机制

Java的异常机制

时间:2024-04-07 18:01:09浏览次数:28  
标签:Java System println catch 机制 异常 public out

异常机制

三种类型

  • 检查型异常:程序员无法预见的
  • 运行时异常:在编译时会被忽略
  • 错误ERROR:错误在代码中被忽略,在编译时检查不到

异常处理机制

  • 抛出异常
  • 捕获异常
  • 异常处理的五个关键字:try,catch,finally,throw,throws

以下为这五个关键词的使用方法:

package exception;

public class Demo02 {
    public static void main(String[] args) {
        //假设要捕获多个异常:从小到大去写

        try {
            new Demo02().a();
        }catch (Error e){//catch(想要捕获的异常类型) 捕获异常
            System.out.println("ERROR");
        }catch (Exception e){
            System.out.println("EXCEPTION");
        }catch (Throwable e){
            System.out.println("THROWABLE");
        }finally {
            System.out.println("finally");
        }


    }


    public void a() {
        b();
    }

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

import org.w3c.dom.ls.LSOutput;

public class Demo03 {
    public static void main(String[] args) {
        int a=1;
        int b=0;

        try {
            System.out.println(a/b);
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
        }
    }





}
package exception;

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

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


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




}
/*
 int a=1;
        int b=0;
        try{//try监控区域
            if(b==0){//throw  throws用于方法
                throw new ArithmeticException();//主动抛出异常
            }

            System.out.println(a/b);
        }catch (ArithmeticException e){
            System.out.println("程序出现异常,变量b不能为0");
        } finally {//善后工作
            System.out.println("finally");
        }
        //finally 可以不要finally

 */

自定义异常

步骤:

  • 创建自定义异常类
  • 在方法中通过throw关键字来抛出异常对象
  • 如果当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作
  • 在出现异常方法的调用者中捕获并处理异常
package exception;
//自定义异常
public class MyException extends Exception{
    //传递数字>10
    private int detail;

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

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

我们来测试下

package exception;

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(1);
        } catch (MyException e) {
            System.out.println("MyException=>"+e);
        }
    }


}

总结:

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

标签:Java,System,println,catch,机制,异常,public,out
From: https://blog.csdn.net/2302_79884878/article/details/137472583

相关文章

  • Java商城免费搭建 VR全景商城 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商
     1.涉及平台平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2.核心架构SpringCloud、SpringBoot、Mybatis、Redis3.前端框架VUE、Uniapp、Bootstrap/H5/CSS3、IOS、Android、小程序4.核心思想分布式、微服务......
  • java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ MybatisPlus
    鸿鹄工程项目管理系统SpringCloud+SpringBoot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更高的要......
  • java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ MybatisPlus
     鸿鹄工程项目管理系统SpringCloud+SpringBoot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更高的......
  • java中LocalDate和Date的应用
     LocalDate和Date的区别:Java中Date与LocalDate、LocalDateTime之间的区别及相互转换_localdate和date区别-CSDN博客​​​​​​​应用:获取n天前的时间数组/***根据time获取time天内时间list**@paramtime时间跨度14-半个月返回15条*......
  • 如何在JavaScript中解析S表达式
    S表达式是Lisp编程语言家族的基础。在本文中,我将逐步向您展示如何创建一个简单的S表达式解析器。这可以作为Lisp解析器的基础。Lisp是实现最简单的语言之一,创建解析器是第一步。我们可以使用解析器生成器来完成这项任务,但自己编写解析器会更容易。我们将使用JavaScript。(本文内......
  • javascript 原生JS实现 fadeIn / fadeOut 方法
    js源码:Object.prototype.fadeIn=function(time,callback){varel=this;el.style.opacity=0;varst=setInterval(function(){el.style.opacity=parseFloat(el.style.opacity)+0.01;if(el.style.opacity>=1){clearInterval(st);if(callback!==......
  • JAVA新版本特性(10万字长文详解)完全指导手册
    目录1、版本详解1.1、Java8升Java111.1.1、Java8升Java11重要特性必读1.1.2、升级JDK11概述1.1.2.1、JDK10后版本发布规则?......
  • 【Web应用技术基础】JavaScript(8)——案例:待办事项
    视频已发。截图如下:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document<......
  • 11.java openCV4.x 入门- Imgcodecs之图像读写
    专栏简介......
  • mysql使用datetime,java如何保存
    CREATETABLE`user`(```省略部分代码``` `create_time`datetimeNOTNULLCOMMENT'创建时间' ```省略部分代码```)javaclassUser{ privateTimestampcreateTime;}java8importjava.sql.Timestamp;```省略部分代码```LocalDateTimenow=L......