面试题答案
一键面试适合自定义运行时异常的业务场景及原因
- 库存不足场景
- 场景举例:当用户下单购买商品时,如果该商品库存数量小于用户购买数量。
- 原因:库存不足这类问题,在程序运行期间才能够明确知晓,并且这属于业务逻辑上可能出现的问题,但并非是代码逻辑错误。使用运行时异常可以避免在调用下单相关方法时,每个调用处都强制进行繁琐的异常处理,让代码更简洁,把异常处理的重点放在合适的业务层捕获处,例如在订单服务层进行统一处理,比如提示用户库存不足等信息。
- 用户支付失败场景
- 场景举例:用户在完成订单支付过程中,由于支付渠道故障、用户账户余额不足等原因导致支付失败。
- 原因:支付失败同样是在运行时才能确定的情况,它属于业务执行过程中出现的意外状况。采用运行时异常能让业务逻辑在遇到此类情况时自然抛出异常,在更高层的业务处理模块中集中捕获并处理,比如向用户显示支付失败原因、提供重试按钮等。
适合自定义编译时异常的业务场景及原因
- 商品数据格式校验场景
- 场景举例:在商品信息录入系统时,如果商品价格格式不符合规定(如必须为数字且大于0)、商品描述长度超过限制等。
- 原因:这种商品数据格式的校验,在编译期就应该能够检查出来,以确保数据的正确性。自定义编译时异常可以强制调用商品录入相关方法的地方必须对可能出现的格式问题进行处理,避免不符合格式要求的数据进入系统,从源头保证数据质量。如果不处理这种编译时异常,可能导致后续业务流程因为数据格式问题而出现严重错误。
- 数据库连接配置错误场景
- 场景举例:当电商系统启动时,需要连接数据库,如果数据库的连接字符串配置错误(如IP地址错误、端口号错误、用户名密码错误等)。
- 原因:数据库连接配置错误属于系统初始化阶段就必须要正确处理的问题。编译时异常强制在系统启动相关代码处对可能的连接配置错误进行处理,不允许错误配置的系统继续运行。否则一旦系统运行起来后才发现连接问题,可能导致大量业务无法正常进行,影响整个电商系统的可用性。