编程思维:Defensive Programming

我们写好程序,将其打包,然后用户就可以使用和运行,但是,外界的情况是未知的,我们的程序很可能因为某个因素的出现而崩溃,因此,对于我们可以预测到的一些可能的问题,我们使用了防御性编程[1](defensive programming) 的策略来避免问题。

参考资料:
[1] Wikipedia: Defensive Proramming

抽象逻辑:Throw Exception

防御性编程是思维层次的产物,具体到代码实现层次,我们就需要抛出异常(Defensive Programming当然也可以有其他的实现,抛出异常只是一种体现),对于可能出现的异常,Java已经列举了很多,我们可以直接使用它们来避开程序可能出现的问题。

编码实现:try catch catch……finallythrowsthrow

这几种方式,都是抛出异常的语法,这里不介绍。

抛出异常让程序达成了什么成就?

答:当代码遇到对应的问题,会将其抛出去,然后继续执行程序,最终,返回exit code 0,代表程序正常退出。

如果没有抛出异常,程序遇到问题就会终止,最终返回的exit code肯定不是0,代表程序退出异常。

所以,返回代码是否为0,也是我们测试程序的一个关注点。

【Java】异常处理的目的相关推荐

  1. Java异常处理总结

    Java异常处理总结           异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制 ...

  2. Java程序员从笨鸟到菜鸟之(十二)java异常处理机制

    异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出 ...

  3. 【java】Java异常处理总结

    java方法中,代码抛出异常,如果没有catch和finally语句,则直接跳出方法,不执行异常代码后面的代码. 若有catch并捕获了异常,则执行catch代码块.若没有捕获,就跳出方法. 若有fi ...

  4. Java 异常处理 try catch

    一:try catch是什么 try catch是java程序设计中处理异常的重要组成部分 异常是程序中的一些错误,有些异常需要做处理,有些则不需要捕获处理,异常是针对方法来说的,抛出.声明抛出.捕获 ...

  5. 《转载》Java异常处理的10个最佳实践

    本文转载自 ImportNew - 挖坑的张师傅 异常处理在编写健壮的 Java 应用中扮演着非常重要的角色.异常处理并不是功能性需求,它需要优雅地处理任何错误情况,比如资源不可用.非法的输入.nul ...

  6. java提供两种处理异常的机制_浅析Java异常处理机制

    关于异常处理的文章已有相当的篇幅,本文简单总结了Java的异常处理机制,并结合代码分析了一些异常处理的最佳实践,对异常的性能开销进行了简单分析. 博客另一篇文章<[译]Java异常处理的最佳实践 ...

  7. java异常处理试题答案_Java 面试题和答案 - (下)

    第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servle ...

  8. Java异常处理终结篇——如何进行Java异常处理设计

    [本文转自于Java异常处理终结篇--如何进行Java异常处理设计] 有一句这样话:一个衡量Java设计师水平和开发团队纪律性的好方法就是读读他们应用程序里的异常处理代码. 本文主要讨论开发Java程 ...

  9. 关于JAVA异常处理的20个最佳实践

    关于JAVA异常处理的20个最佳实践 在我们深入了解异常处理最佳实践的深层概念之前,让我们从一个最重要的概念开始,那就是理解在JAVA中有三种一般类型的可抛类: 检查性异常(checked excep ...

  10. 小菜:Java异常处理的10个最佳实践

    转载自   小菜:Java异常处理的10个最佳实践 异常处理在编写健壮的 Java 应用中扮演着非常重要的角色.异常处理并不是功能性需求,它需要优雅地处理任何错误情况,比如资源不可用.非法的输入.nu ...

最新文章

  1. 【MongoDB学习之一】初始MongoDB
  2. 我平常整理了CString的一些用法,很实用,发给你共享,相信你以后遇到CString的问题都会迎刃而解:...
  3. 数据库编程入门培训(二)
  4. Spring Cloud【Finchley】-16 Zuul的路由配置
  5. PyTorch 1.10正式版上线了!附相关资源
  6. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第39篇]侧信道攻击和故障攻击有什么区别
  7. 《SpringCloud超级入门》Spring Cloud Eureka是什么?《八》
  8. 阿里云物联网平台 > 设备接入 > 使用开放协议自主接入 > CoAP协议接入 >
  9. Maximum Mode
  10. 变量、变量类型与cin的基本用法详解(C++)
  11. (转载)巴西世界杯谁能夺冠?霍金和高盛做预测
  12. 如何彻底关闭Win10自动更新,Win10永久关闭自动更新的方法
  13. python -简易密码生成器
  14. leetcode2248. 多个数组求交集【290场周赛】(java)
  15. 软件离散数学复习笔记资料
  16. 假如再有三年生命,世界的教育改革家--乔布斯
  17. HTML5期末大作业 基于HTML+CSS+JavaScript学校官网首页
  18. 2021的最新操作系统知识梳理,建议收藏!
  19. 微信小程序--嘟嘟会议--会议发布和我的会议查看
  20. RSA 2022/8/17

热门文章

  1. linux cat显示若干行
  2. MST:Bad Cowtractors(POJ 2377)
  3. 【转】Sql server锁,独占锁,共享锁,更新锁,乐观锁,悲观锁
  4. 用matlab 拟合实数解,求大神指点matlab用拟合的方式解延迟微分方程组参数
  5. hujingwei oracle_Oracle收缩表空间
  6. vue vue的table表格自适应_vue table autoHeight(vue 表格自动高度)
  7. 手机号正则表达 php,php 手机号码正则表达试程序代码_PHP教程
  8. win10安装opcenum_Win10提示Windows无法安装到GPT分区形式磁盘
  9. linux将所有文件生成lst_Linux自定义repo文件
  10. java citymap_Java实现Map集合二级联动