Java中的异常

准备生日礼物 摘要: 题目要求统计某月份需要准备的员工生日礼物数量。输入包括目标月份、员工姓名列表和对应的生日列表(格式为Year/Month/Day)。需处理重复员工(以最后一次录入为准),统计该月生日的员工人数。示例1中5月有3名员工生日,输出3;示例2中10月有6名,输出6。解题关键在于使用哈希表去重(以员工姓名为键),拆分生日字符串提取月份进行匹配。代码实现(C++/Java/Python)均遵循以下步骤:读取输入、哈希去重、解析月份并统计目标月份人数。时间复杂度为O(n),空间复杂度O(n)。 阅读详情

Java异常是我们编程中时时刻刻都要使用的特性,但是我们却很少去关注它细节的一些信息。

Exception架构

image

所有的异常都是派生至Throwable,最主要的2个继承类是Exception和Error。

我们常说的异常都是指Exception,Exception分为Check Exception和Unchecked Exception。

JDK文档中对Error中解释是:用于指示合理的应用程序不应该试图捕获的严重问题,大多数这样的错误都是异常条件。其中一个比较特殊的就是ThreadDeath,我们不应该去捕获这个异常,熟悉多线程编程的朋友一定会清楚其中的原因。

Check Exception和Unchecked Exception

之前在学习C++和C#的时候,所有的异常处理都属于Unchecked Exception,后来学习Java发现,Java语言对于某些异常强制要求声明methods会抛出什么异常,并且在需要强制捕获某些异常,这种异常就属于Check Exception。

关于什么时候应该使用Check Exception,什么时候应该使用Unchecked Exception很多人都有讨论,并没有一个统一的结论。不过绝大多数的观点是:混合使用。

使用Exception的常见错误

我们看看下面这段代码:

   1:  
   2: // from http://gpcuster.cnblogs.com
   3: InputStream input = null;
   4:  
   5: try{
   6:  
   7:   input = new FileInputStream("myFile.txt");
   8:  
   9:   //do something with the stream
  10:  
  11: } catch(IOException e){
  12:   throw new WrapperException(e);
  13: } finally {
  14:   try{
  15:    input.close();
  16:   } catch(IOException e){
  17:      throw new WrapperException(e);
  18:   }
  19: }

如果不存在myFile.txt文件的话,这段代码最终将会如果执行?

如果仔细考虑这个问题会非常有意思:

首先,在执行input = new FileInputStream(“myFile.txt”)的时候,抛出FileNotFindException。

然后,进入到catch段,将来抛出WrapperException,但还没有抛出这个异常。

最后,进入final段,这个时候,input是null的,所以将会抛出NullPointException。

通过这个剪短的分析,我们可以看出,最终的执行结果是抛出NullPointException。

更好地使用异常

如何更加高效地使用异常是一个大家关注的问题,这里主要有4点建议提供大家参考:

1 对catch住的异常进行包装和扩展。
2 使用自定义的异常处理接口。
3 在catch异常的最上层记录异常日志。
4 使用异常处理模板。
    APP爬虫:Airtest的使用和爬取实战详解 Airtest是一个跨平台的自动化测试工具,主要用于移动应用和游戏的UI自动化测试。它支持图像识别、触摸操作、文本输入等功能,能够模拟真实用户的操作行为。此外,Airtest还具备强大的日志记录和报告生成功能,方便开发者进行调试和分析。图像识别:通过截图匹配元素,无需依赖 UI 层次结构。跨平台支持:支持 Android、iOS 和 Windows 应用。简单易用:提供 IDE 和脚本录制功能,降低使用门槛。 阅读详情

    相关推荐

    基于Java+Maven+Testng+RestAssured+Allure+Jenkins搭建一个接口自动化框架

    2、有一个提取表达式列,通过编写每个接口的JSON提取表达式,后边在解析Excel时,对接口执行后的响应数据用该表达式提取出来,保存到环境变量,如果某些接口需要前置接口的响应数据,我们就可以从环境变量中获取该数据出来,从而解决了接口关联的问题。1、在之前介绍过全局配置类Contants中添加一个控制台日志开关控制权限,如果选择为false,则控制台不输出日志,将日志输出到allure报表,选择为true,则在控制台输出日志,不输出到allure报表。

    专注于技术分享的博主 1185

    InputMisMatchException(输入类型不匹配异常)

    InputMisMatchException是(输入类型不匹配异常),InputMisMatchException的继承关系,如何处理,为避免该异常需要怎么做。

    chen_kai_fa的博客 8400

    PM1132-220V转5V电源芯片:SOT-23-3封装的高效电源解决方案

    在现代电子设备小型化和高效化的趋势下,PM1132芯片凭借其的能力与特性,成为工业控制IoT设备及便携电器的理想电源管理方案。以下从核心技术设计挑战和应用实践展开分析。

    M_D13Z476I000l的博客 804

    控制器发生异常 eofexception_记TemplateInputException异常的处理过程

    我们使用SpringBoot+thymeleaf创建新项目,一般目录如下:当我们请求 /home/index,自然会请求到但我们把返回的视图路径改了,或者写错了,如下图那我们得到结果是什么呢?没错,是白页,也说得很清楚了,无法渲染模板,这个模板可能不存在。我们看看报的错误信息。抛出了一个org.thymeleaf.exceptions.TemplateInputException,正是这个异常,折...

    weixin_39524183的博客 528

    电力工程师必看:GOOSE/SV/MMS三协议在智能变电站中的分工与联动实例

    本文深入解析了智能变电站中GOOSE、SV、MMS三大核心通信协议的分工与协同机制。GOOSE协议作为过程层的“闪电信使”,负责毫秒级传输跳闸命令等事件信息;SV协议则传输精确同步的电流电压采样值流;而MMS协议作为站控层的“管理语言”,实现设备监控与数据管理。三者基于IEC 61850标准,在过程层、间隔层和站控层之间高效联动,共同构建了智能变电站稳定可靠的通信骨架。

    jj890的博客 366

    虚幻引擎5 AR开发教程02:构建和测试AR Android App

    在本教程中,我们将学习如何在虚幻引擎 5 上构建和测试 AR 安卓应用。

    mopanchun的博客 2650

    报错org.thymeleaf.exceptions.TemplateInputException: Error resolving template解决方案

    最近在使用springboot+thymeleaf写程序的时候,一直报错org.thymeleaf.exceptions.TemplateInputException: Error resolving template整了好长时间才解决,因为自己踩过坑了,所以,在这里,本人给出目前我所搜集到的所有报这个错的情况的解决方案。 org.thymeleaf.exceptions.TemplateInpu...

    weixin_43963200的博客 1万+

    uniapp 使用摄像头 live-pusher (APP)

    uniapp 中开发 app 时使用live-pusher踩过的坑

    随身笔记 1万+

    org.thymeleaf.exceptions.TemplateInputException 的完美解决

    俗话说不能在一个地方跌倒两次,但是最近在这个项目改版的时候这个坑自己竟然踩了两次。本文就着重介绍此报错org.thymeleaf.exceptions.TemplateInputException 的解决方案,网上关于这个错误的解决方案很多,但是每个人遇到的庆坤噶可能不一样,需要我们去排查。高手可直接忽略,不喜勿喷。 我是在访问某个接时,控制台出现org.thymeleaf.exceptions.TemplateInputException 的错误,根据详细的报错信息可以找到具体是哪个方法报...

    曰业而安的博客 2万+

    发那科机器人抓手与物料搬运阀的配置与优化实践

    本文详细介绍了发那科机器人抓手与物料搬运阀的配置与优化实践,包括基础配置指南、阀岛与输入模块的详细设置、测试程序编写与验证技巧,以及常见问题排查与性能优化建议。通过实际案例和经验分享,帮助技术人员快速掌握关键配置步骤,提升物料搬运系统的稳定性和效率。

    weixin_33738555的博客 385

    解锁RK3588芯片超强网络性能:多队列网卡与IRQ负载均衡实战

    摘要:本文针对RK3588芯片的网络性能优化展开研究,重点探讨了多队列网卡配置和IRQ负载均衡技术。通过配置多队列网卡,将网络流量分散到多个队列处理,显著提升了吞吐量(测试显示提升67%)。同时,通过IRQ负载均衡配置使中断请求均匀分配到各CPU核心,CPU利用率降低至35%。文章详细介绍了配置步骤、测试方法,并分析了常见问题及解决方案。这些优化措施有效提升了RK3588在网络录像机、边缘计算等应用场景中的性能表现,为高性能网络应用提供了有力支持。

    远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 499

    TemplateInputException

    Error resolving template "itoperations/api/order/messagelist", template might not exist or might not be accessible by any of the configured Template Resolvers 这个原因是由于我没加@ResponseBody

    栀子花开几百度的博客 8669

    《Zephyr OS 入门与实战》第5章:内存管理策略

    【代码】《Zephyr OS 入门与实战》第5章:内存管理策略。

    2301_79143213的博客 349

    【Java】Java中的异常

    在Java中,异常(Exception)是指程序执行过程中可能出现的不正常情况或错误。它是一个事件,它会干扰程序的正常执行流程,并可能导致程序出现错误或崩溃。异常在Java中是以对象的形式表示的,这些对象是从类或其子类派生而来。Throwable和。是表示可检查异常的基类。可检查异常是指在编译时需要显式处理的异常。Exception类及其子类用于表示程序运行过程中可能出现的外部条件、错误或其他可恢复的情况。例如,文件未找到、网络连接中断、输入格式错误等。

    qq_61635026的博客 5716

    OV9734 DATASHEET,完整规格书

    OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

    STM32F407中文手册

    STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

    java中的异常

    我们实现一个用户登陆功能if (!if (!System.out.println("登陆成功");自定义异常具体实现方法1.自定义异常类,然后继承Exception或RunTimeException2.实现一个带有String类型参数的构造方法,参数含义:异常出现的原因。上面的login代码可以改成这样if (!throw new UserNameException("用户名错误!");if (!throw new PasswordException("用户名错误!");

    DXY798的博客 1485

    VB摄像头监控

    该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

    认识Java中的异常、异常的基本用法

    一、认识异常 1、常见的异常 1.算术异常 System.out.println(10 / 0); // 执行结果 Exception in thread "main" java.lang.ArithmeticException: / by zero 2.数组下标越界 int[] arr = {1, 2, 3}; System.out.println(arr[100]); // 执行结果 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsE

    1226 3601

    IDEA的使用指南

    IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

    java中如何写异常_Java中的异常

    异常全部继承自超类ThrowableError错误:程序运行过程中 非常严重的错误我们的态度:不需要处理(处理不了),不去掩盖,应该找到根源去修改。例如:内存泄漏(死循环)栈溢出(无限递归)Exception异常:小错误,分为运行时异常和编译期异常运行时异常:RuntimeException及其子类,编译的时候不报错。 运行的时候才会报错设计理念:运行时异常是为用户准备的,程序员在设计编码的时候,...

    weixin_36211536的博客 1596

    Java中的异常以及对异常的处理

    Java代码在运行时期发生的问题就是异常。在Java中,把异常信息封装成了一个类,当出现问题时,就会创建异常类对象并抛出异常相关的信息(如异常的位置、原因等)异常的继承体系      在Java中使用Exception类来描述异常。Exception类及其子类是Throwable的一种形式,它用来表示Java程序中可能会产生的异常,并要求对产生的异常进行合理的异常处理。      Exceptio...

    hepei_i的博客 2187

    java中的异常,异常处理

    jdk自带了很多异常类型。我们为了更好的知道异常类型。我们可以自己定义异常类。根据不同的异常名称,判断异常的错误。public class 异常类名 extends RuntimeException{public 异常类名(String msg){super(msg);

    nie6668888的博客 1405

    java 所有的异常类_java中的异常类

    Java中的异常:1.Throwable是所有异常的根,java.lang.ThrowableThrowable包含了错误(Error)和异常(Exception),Exception又包含了运行时异常。Error:java.lang.ErrorException:java.lang.Exception2.Exception一般分为Checked异常和Runtime异常,所有RuntimeExc...

    weixin_35439783的博客 2023
    上一篇: 使用CapacityTaskScheduler
    下一篇: 搭建Hive平台
    gpcuster
    博客等级 码龄21年 297粉丝 99原创
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    个

    红包个数最小为10个

    元

    红包金额最低5元

    当前余额3.43元 前往充值 >
    需支付:10.00元
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付元
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值