运行时有出现过什么异常?

2025-12-04 0 869

在我的项目开发和生产运维中,遇到的异常可以归纳为以下几类:

第一类:常见的运行时异常

这类异常通常是由于编码疏忽或逻辑不严谨造成的。

  • 空指针异常
    • 场景 最经典的比如:调用 null 对象的方user.getName(), 从Map中get一个不存在的键返回null后继续操作,或者自动拆箱Integerint时对象为null
    • 原因与解决: 根本原因是缺少null值判断。我的解决方法是:1)在调用前进行判空;2)使用Optional类来优雅地处理可能为null的情况;3) 在获取 Map 值时使用getOrDefault方法。
  • 类型转换异常
    • 场景: 在使用集合框架时,比如从一个声明为List的集合里取出一个元素并强转为String,但实际上里面存放的是Integer
    • 原因与解决: 原因是类型不安全。解决方法是:1)在使用泛型集合时,始终指定具体的类型参数,利用编译器的类型检查;2)在强制转换前使用instanceof进行类型判断。
  • 数组越界/字符串越界异常
    • 场景: 循环或访问数组、列表、字符串时,索引超出了有效范围。
    • 原因与解决: 循环条件或索引计算错误。解决方法是在访问前检查索引是否 >=0< array.length

第二类:业务相关的特定异常

这类异常与你的项目业务逻辑紧密相关,能体现你的业务理解能力。

  • 场景: 比如在一个电商项目中,我遇到过 InventoryShortageException
  • 原因: 用户下单时,系统检测到商品库存不足。
  • 解决: 这不仅仅是一个技术异常,更是一个业务流程问题。我们不仅在代码中抛出这个异常,还在前端给用户明确的提示“商品库存不足”,并引导用户重新选择。同时,这个异常会触发告警,通知运营人员及时补货。

第三类:框架和集成相关的异常

这类异常能体现你对所用技术栈的熟悉程度。

  • Spring框架中的异常:
    • BeanCreationException: 比如Bean注入失败,可能是因为循环依赖。我们通过代码重构,使用@Lazy注解或 setter 注入来解决。
    • TransactionException: 事务回滚失败。我们检查了事务的传播属性和数据库连接,确保在异常发生时事务能正确回滚。
  • 数据库相关异常:
    • DataIntegrityViolationException: 插入数据违反了数据库约束(如唯一键冲突、外键约束)。我们通过在前端增加数据校验和在代码中先查询再插入的逻辑来避免。
    • DeadlockLoserDataAccessException: 数据库死锁。我们通过分析数据库死锁日志,调整业务逻辑中SQL的执行顺序,或者缩短事务执行时间来减少死锁概率。
  • 网络和微服务异常:
    • ConnectException / SocketTimeoutException: 在调用外部HTTP接口或微服务时,连接超时或读取超时。
    • 原因与解决: 网络不稳定或下游服务响应慢。我们的解决方案是:1)合理设置连接和读取超时时间;2)引入重试机制(如Spring Retry);3)使用熔断器模式(如Hystrix或Resilience4j)防止雪崩效应。

需要避免的坑

  • 不要说“我没遇到过什么异常”: 这会显得你经验不足。
  • 不要只停留在表面: 不要只说“我遇到了NPE,然后加了判空”。要深入一点,讲讲场景和思考。
  • 不要抱怨: 不要把问题归咎于同事或过时的代码,要展示你主动解决问题的能力。

总结

面试官问这个问题,不仅仅是想听你列举异常名称,他更想考察你的实战经验、问题分析能力和解决复杂问题的思路。用一个结构化的回答,并结合一个深入的故事,会让你在这个问题上获得高分。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 运行时有出现过什么异常? https://www.zuozi.net/3454.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务