首页 > 其他分享 >异常处理

异常处理

时间:2024-10-19 12:23:14浏览次数:1  
标签:处理 System try catch println new 异常 out

一、异常的定义

/*
    异常:java程序编译或运行过程中出现的问题
    Throwable:
        Error: 表示非常严重的问题,自己无法解决的问题
        Exception:
            除了RuntimeException其它异常【编译时期异常】: 一般指的是异常尚未处理就编译了
            RuntimeException【运行时期异常】: 运行过程中报错了,一般情况下是因为语法逻辑不正确导致

    JVM遇到问题时,默认的处理方案是:停止程序,抛出错误。
 */
//class Demo implements Cloneable{
//    @Override
//    protected Object clone() throws CloneNotSupportedException {
//        return super.clone();
//    }
//}

public class ExceptionDemo1 {
    public static void main(String[] args) {
//        Demo demo = new Demo();
//        Object clone = demo.clone();

//        int[] arr = {11,22,33,44};
//        System.out.println(arr[5]);

        int i = 5;
        int j = 0;
        System.out.println(i/j);

        System.out.println("hello world");

    }
}

二、异常的处理方案


/*
    异常的处理方案:
        1、try...catch...finally

    try...catch使用注意事项:
        1、当try中出现异常时,JVM会对应创建一个异常类对象
        2、自上而下会与catch中的异常进行匹配,若匹配上就相当于处理了,执行catch中的逻辑
        3、若try中有多个异常,当第一个异常触发时,try中的其它后续代码都不会执行,JVM会对应创建一个异常类对象进行第二步匹配
        4、可以直接写一个catch里面是所有异常的父类、
        5、若存在多个catch匹配,需要将父类异常往后写
        6、若使用jdk新特性的写法的话,异常类之间不能存在继承关系
 */
public class ExceptionDemo2 {
    public static void main(String[] args) {

        int[] arr = {11, 22, 33, 44, 55};

//        try {
//            System.out.println(arr[8]); // new ArrayIndexOutOfBoundsException()
//            System.out.println(10/3); // new ArithmeticException()
//            System.out.println("江川比李刚帅!");
//        }catch (ArrayIndexOutOfBoundsException e){ // = new ArrayIndexOutOfBoundsException()
//            System.out.println("出错啦!!");
//        }catch (ArithmeticException e){
//            System.out.println("除0错误!!");
//        }

//        try {
//            System.out.println(arr[2]); // new ArrayIndexOutOfBoundsException()
//            System.out.println(10/0); // new ArithmeticException()
//            System.out.println("江川比李刚帅!");
//        }catch (ArithmeticException e){
//            System.out.println("除0错误!!");
//        }catch (Exception e){ // = new ArrayIndexOutOfBoundsException()
//            System.out.println("出错啦!!");
//        }

        try {
            System.out.println(arr[8]); // new ArrayIndexOutOfBoundsException()
            System.out.println(10 / 3); // new ArithmeticException()
            System.out.println("江川比李刚帅!");
        } catch (ArrayIndexOutOfBoundsException | ArithmeticException e) { // = new ArrayIndexOutOfBoundsException()
            System.out.println("出错啦!!");
        }


        System.out.println("李刚真帅!");


    }
}

三、try...catch...finally使用

/*
    try...catch...finally

    无论try中的代码是否出错,finally都会执行。
    finally一般来说,用作释放资源的作用。
 */
public class ExceptionDemo4 {
    public static void main(String[] args) {
        int[] arr = {11, 22, 33, 44, 55};


        try {
            System.out.println(3/2);// new ArrayIndexOutOfBoundsException()
        } catch (Exception e) { // = new ArrayIndexOutOfBoundsException()
            e.printStackTrace();
        } finally {
            System.out.println("数加666");
        }


        System.out.println("李刚是世界首富!!");
    }
}

四、throws和throw

import java.io.FileInputStream;
import java.io.IOException;

/*
    throws: 抛出
    在方法的定义上抛出异常类, throws本身是不会处理异常的,只是当时方法内部不用处理了,
    但是当调用者调用有问题的方法时,需要调用者进行处理

    throw: 抛出
    在方法内部抛出异常对象,表示一个确定的异常

    注意:
        当调用者调用抛出运行时期异常的方法时,可以选择不去处理,也能运行。
        当调用者调用抛出编译时期异常的方法是,必须要进行处理,否则编译不通过无法运行。

   小故事理解 throw throws try...catch 的使用:
        江川是一个快乐的小矿工,有一天他挖到了一个远古炸弹

标签:处理,System,try,catch,println,new,异常,out
From: https://www.cnblogs.com/ndmtzwdx/p/18475736

相关文章

  • 初探AI之got-ocr2.0大模型本地部署与遇到的各种坑处理
    一、环境搭建1.安装cuda,本人使用的是12.1版本,下载地址:https://developer.nvidia.com/cuda-12-1-1-download-archive2.安装conda3,https://blog.csdn.net/m0_73634846/article/details/1363783503.准备代码环境原文:https://mp.weixin.qq.com/s/PQVrlr5FoVb89Mivzi7pLA顺序执......
  • 【PostgreSQL】如何安装和配置PgBouncer以提高PostgreSQL的并发处理能力?
    安装和配置PgBouncer以提高PostgreSQL的并发处理能力是一个多步骤的过程。PgBouncer作为连接池器,可以有效地管理到PostgreSQL服务器的连接,从而减少每个新连接所需的开销,并且能够更高效地利用资源。下面是详细的步骤说明,包括如何在Debian/Ubuntu系统上安装PgBouncer以及如何......
  • Flutter音频处理
    sampleSizeInBits每个样本的位数每个样本的位数(sampleSizeInBits)指的是在音频信号中,每个样本的位深度,也就是每个音频样本的数字表示所使用的位数。这一参数直接影响音频的动态范围和音质。常用的为8位16位24位32位1.位深度(SampleSize)8位:每个样本用8位二进制表示,值......
  • 异常问题解决
    异常:java程序编译或运行过程中出现的问题Throwable:Error:表示非常严重的问题,自己无法解决的问题Exception:除了RuntimeException其它异常【编译时期异常】:一般指的是异常尚未处理就编译了RuntimeException【运行时期异......
  • 常量、变量与简单的str处理
    1、常量、变量与简单的str处理1、常量与变量程序中有2种"量",一种是可以变的,一种是不能变的,我们将它们成为变量、常量常量就是固定不变的量6699#6699就是一个常量print(100)#这个100就是常量print(3.1415)#3.1415在一些地方,人们经常使用“变量是盒子”这样的比喻,......
  • 三、MyBatis实践:提高持久层数据处理效率(1)(包含mybatis下载官网)
    一、Mybatis简介1.1简介https://mybatis.org/mybatis-3/zh/index.htmlMyBatis最初是Apache的一个开源项目iBatis,2010年6月这个项目由ApacheSoftwareFoundation迁移到了GoogleCode。随着开发团队转投GoogleCode旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移......
  • 调用淘宝 API 时如何处理错误信息?
    在调用淘宝API时,可以按照以下方式处理错误信息:一、了解淘宝API的错误码体系:仔细研读文档:淘宝API有一套自己的错误码定义,在开发前要认真阅读淘宝开放平台提供的API文档,熟悉各种错误码的含义及对应的解决方案。例如,“isv.invalid-parameter”可能表示参数无效,“isv.trade-no......
  • 数据预处理-DataFrame切片
    此Blog仅作为日常学习工作中记录使用,Blog中有不足之处欢迎指出以kaggle中房屋预测的训练集为例,说明DataFrame切片常用操作一、读入数据importnumpyasnpimportpandasaspdfile_path='***\kaggle_house_pred_train.csv'data=pd.read_csv(file_path)data.columns......
  • 如何在 Spring Boot 中处理 Protobuf 数据格式
    个人名片......
  • 记上报信息格式异常问题的解决
    本文记述解决上报信息格式异常问题的全过程。问题描述生产环境监控上报无法解析终端信息,通过日志发现是PCN字段前面缺失#号,导致解析程序解析失败。正常情况下,应该展示如下内容:HD1234#PCN1234发生错误情况时,记录如下HD123?PCN1234问题分析以及解决通过进一步的后台日志......