Java开发笔记(七十六)如何预防异常的产生

本文探讨了如何在Java编程中预防异常的发生,强调了通过校验和条件分支来避免算术异常、数组越界、空指针异常和类型转换异常。还讨论了内存和栈溢出的问题,指出即使不进行递归调用,分配过大的内存或参数也可能导致错误。通过举例说明,建议在处理大量数据时采用边加载边播放的方式,以及传递文件路径而非完整数据来节省资源。
摘要由CSDN通过智能技术生成

每个程序员都希望自己的程序稳定运行,不要隔三岔五出什么差错,可是程序运行时冒出来的各种异常着实烦人,令人不胜其扰。虽然可以在代码中补上try/catch语句捕捉异常,但毕竟属于事后的补救措施。与其后知后觉地亡羊补牢,不如一开始就未雨绸缪,只要防患于未然,必能收到事半功倍的成效。
就编码时的常见异常而言,绝大多数异常都能通过适当的校验加以规避,也就是事先指定可让程序正常运行的合法条件,只有条件满足才开展业务逻辑处理,否则进行失败情况的处理。这样用于异常捕捉的try/catch语句便转换为了条件分支的if/else语句,对于熟能生巧的if/else流程控制,想必程序员在编码时更能游刃有余。接下来以几个常见的异常为例,阐述一下如何预防这些异常的发生。
首先看最简单的算术异常,如果是除数为零的异常,检查一下除数的值是否为零就行了。如果是大小数除法运算遇到的“商为无限循环小数”异常,就得在调用divide方法之时指定本次除法运算的小数精度,以及精度范围最后一位数字的舍入方式。下面是优化后的大小数除法代码例子:

// 测试算术异常:商是无限循环小数
private static void testDivideByDecimal() {
	BigDecimal one = BigDecimal.valueOf(1);
	BigDecimal three = BigDecimal.valueOf(3);
	// 大小数的除法运算,小数点后面保留64位,其中最后一位做四舍五入
	BigDecimal result = one.divide(three, 64, BigDecimal.ROUND_HALF_UP);
	System.out.println("sqrt result=" + result);
}

其次看数组越界异常&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值