【Java 面试合集】简述下自定义异常的应用场景

news2025/6/9 10:09:26

简述下自定义异常的应用场景

在这里插入图片描述

1. 概述

如上图所示,我们想回答这个问题就要了解异常的基本结构。哪些是我们可以控制的,哪些是我们不能控制的。

也许有人会问了,其实在逻辑中可以多加判断,为什么要需要自定义呢。 其实判断的内容无非是以下几种:

  • 多添加if else。尽可能保证每个分支的细节
  • 多嵌套try catch, 保证即使程序出错了,也可以走到有效的catch中

但是如果任由这种错误抛出的话,对前端用户不友好,因为用户不理解什么错误。

2. 自定义

我们不自定义异常可以满足需求。但是如果自定义异常后,会有诸多好处:

  • 所有的异常都归于一处处理,方便异常管理
  • 可以给自定义异常传递一些关键字,方便错误定位
  • 进行错误信息转换,给前端友好提示
public class MyException extends Exception {
    public MyException() {
        super();
    }

    public MyException(String message) {
        super(message);
    }

    public MyException(String message, String iden) {
        super(message);
        // 此处可以进行logger打印。 方便不同的识别码定位问题
        System.out.println(iden);
        // 此时可以返回统一的错误
    }
}

3. throw 以及throws 不同

public class TestVar07 {

    public void test01(int i) throws MyException {
        if (i == 0) {
            throw new MyException("i is 0");
        }
    }
}

  • throw 表示遇到特殊的分支不进行处理,主动抛出异常
  • throws 用来接受内部抛出的异常,其异常给调用者进行处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/334317.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rigol 普源MSO5104数字示波器技术参数

MSO5000系列数字示波器是基于RIGOL UltraVision II代技术的高性能中低端数字示波器,采用9英寸多点电容触摸屏,集7种仪器于一身。具有超高的采样带宽比和存储深度等优异的性能指标,以及精巧便携的外观设计。高集成度的ASIC芯片组和创新性的前端…

大数据技术架构(组件)27——Spark:CacheCheckpoint BroadcastAccumulate

2.1.7、Cache&Checkpoint&Broadcast&Accumulate2.1.7.1、Cache2.1.7.1.1、Cache原理RDD是通过iterator进行计算的。当然该方法是内部调用的,不会暴露给用户使用;1、CacheManager通过BlockManager从Local或者Remote获取数据,然后通…

网站虚拟主机的流量为什么会受限制?

虚拟主机流量限制是指网站所在的虚拟主机提供商对网站流量的限制,网站的流量超出限制的话将会受到一定影响,从而影响网站的正常运行。那么网站虚拟主机流量为什么会受限制?本文将详细介绍。 一、虚拟主机流量限制的主要原因 1、虚拟主机提供商设置的流量…

SpringBoot/SpringCloudAlibaba(ruoyi)中cron表达式(配置每天指定整点执行)读取配置文件

场景 若依微服务版手把手教你本地搭建环境并运行前后端项目: 若依微服务版手把手教你本地搭建环境并运行前后端项目_霸道流氓气质的博客-CSDN博客 在上面的基础上某业务需要配置cron表达式,该表达式需要指定每天的指定的整点执行, 比如每…

如何借力Alluxio推动大数据产品性能提升与成本优化?

内容简介 随着数字化不断发展,各行各业数据呈现海量增长的趋势。存算分离将存储系统和计算框架拆分为独立的模块,Alluxio作为如今主流云数据编排软件之一,为计算型应用(如 Apache Spark、Presto)和存储系统&#xff0…

buu [网鼎杯 2020 青龙组]boom 1

题目描述: 一个应用程序,打开了是一串要运行的代码: 题目分析: 首先,跟着代码走下1去得到: 对密文进行md5解密,得到:输入后继续跟着代码走下去,得到:好家伙&#xff0…

RabbitMQ 部署指南

RabbitMQ 部署指南RabbitMQ部署指南1.单机部署1.1.下载镜像1.2.安装MQ2.安装DelayExchange插件2.1.下载插件2.2.上传插件2.3.安装插件3.集群部署2.1.集群分类2.2.获取cookie2.3.准备集群配置2.4.启动集群2.5.测试2.5.1.数据共享测试2.5.2.可用性测试4.镜像模式4.1.镜像模式的特…

太酷了,用Python实现一个动态条形图!

大家好,我是小F~说起动态条形图,小F之前推荐过两个Python库,比如「Bar Chart Race」、「Pandas_Alive」,都可以实现。今天就给大家再介绍一个新的Python库「pynimate」,一样可以制作动态条形图,…

JVM调优最全面的成长 :参数详解+垃圾算法+示例展示+类文件到源码+面试问题

目录1.优秀的Java开发者1.1 什么是Java?1.2 编程语言1.3 计算机[硬件]能够懂的语言1.3.1 计算机发展史1.3.2 计算机体系结构1.3.3 计算机处理数据过程1.3.4 机器语言1.3.5 不同厂商的CPU1.3.6 操作系统1.3.7 汇编语言1.3.8 高级语言1.3.9 编译型和解释型1.3.9.1 编译…

内网渗透(十三)之内网信息收集-收集域环境中的基本信息

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

android kotlin 协程(一) 简单入门

android kotlin 协程(一) config: system: macOS android studio: 2022.1.1 Electric Eel gradle: gradle-7.5-bin.zip android build gradle: 7.1.0 Kotlin coroutine core: 1.6.4 前言:最近系统的学习了一遍协程, 计划通过10篇左右blog来记录一下我对协程的理解, 从最简…

视频融合平台EasyCVR集成宇视SDK关闭“按需直播”,一直未拉流是什么原因?

EasyCVR平台不仅能提供丰富的视频能力,还可提供云、边、端分布式海量视频资源的统一管理与运维,从而实现数据采集、处理、汇聚、分析、存储、管理等全环节的视频能力。借助智能分析网关的AI智能检测能力,可实现人脸、人体、车辆、烟火、物体、…

(十五)双边滤波Bilateral Filter

文章目录mathjax: true1.高斯滤波1.1 理论1.2 示例2.双边滤波(Bilateral Filter)2.1 理论基础2.2 OpenCV bilateralFilter函数参考资料欢迎访问个人网络日志🌹🌹知行空间🌹🌹 title: 3.双边滤波BilateralFi…

微信小程序 java基于Android老年人智慧服务平台-

目录 1绪论 4 1.1项目研究的背景 4 1.2开发意义 4 1.3项目研究内容 4 1.4论文结构 4 2开发技术介绍 6 2.1B/S架构 6 2.2 Android平台 6 2.3 Java语言简介 6 2.4 MySQL 介绍 7 2.5 MySQL环境配置 8 2.6 SSM框架 8 3系统分析 9 3.1可行性分析 9 3.1.1技术可行性 9 3.1.2经济可行性…

【图像异常检测】 Anomalib

原文: A practical guide to image-based anomaly detection using Anomalib 1. 简介 在工业生产中,质量保证是一个很重要的话题, 因此在生产中细小的缺陷需要被可靠的检出。工业异常检出旨在从正常的样本中检测异常的、有缺陷的情况。工业…

构建工具tsup入门第四部分

🎄Hi~ 大家好,我是小鑫同学,一位长期从事前端开发的编程爱好者,我将使用更为实用的案例输出更多的编程知识,同时我信奉分享是成长的唯一捷径,在这里也希望我的每一篇文章都能成为你技术落地的参考~ 目录&am…

哈夫曼树、带权路径长度、前缀编码 的概念

文章目录一、基本概念1.1带权路径长度(WPL)1.2哈夫曼树二、哈夫曼树的构造三、哈夫曼树的应用3.1哈夫曼编码与前缀编码一、基本概念 1.1带权路径长度(WPL) 路径长度: 经历的边数 结点的带权路径长度: 从树…

创建线程的三种模式

进程,是对运行时程序的封装,是系统进行资源调度和分配的基本单位,实现了操作系统的并发。 线程,是进程的子任务,是CPU调度和分派的基本单位,实现了进程内部的并发。 线程在进程下运行。 进程之间不会影响…

从0到1一步一步玩转openEuler--09 openEuler基础配置--设置日期和时间

文章目录9 设置日期和时间9.1 使用timedatectl命令设置9.1.1 显示日期和时间9.1.2 通过远程服务器进行时间同步9.1.3 修改日期9.1.4 修改时间9.1.5 修改时区9.2 使用date命令设置9.2.1 显示当前的日期和时间9.2.2 修改时间9.2.3 修改日期9.3 使用hwclock命令设置9.3.1 硬件时钟…

QT之OpenGL深度测试

QT之OpenGL深度测试1. 深度测试概述1. 1 提前深度测试1.2 深度测试相关函数2. 深度测试精度2.1 深度冲突3. Demo4. 参考1. 深度测试概述 在OpenGL中深度测试(Depth Testing)是关闭的,此时在渲染图形时会产生一种现象后渲染的会把最先渲染的遮挡住。而在启用深度测试…