再牛的程序员也无法提前预见代码运行时可能遇到的所有情况,机会每个程序员都被用户说过“你编的那个软件不好用啊”,而程序员经过反复检查以后发现问题的原因是用户操作不规范或者输入了错误类型的数据,于是一边修改代码加强类型检查一边抱怨用户为什么不按套路出牌。其实,问题的根源还是在程序员而不在用户,程序员编写代码时有义务考虑这些特殊情况,因为大多时候,恰恰是一些特殊情况影响了整个系统的美感和成就感,这时候异常处理结构则是避免特殊情况下软件崩溃的利器。

  每种高级编程语言都提供了不同形式的异常处理结构,大幅度提高了代码的健壮性。简单地说,异常是指程序运行时引发的错误,引发错误的原因有很多,例如除零、下标越界、文件不存在、网络异常等。如这些错误得不到正确的处理将会导致程序崩溃并终止运行,合理地使用异常处理结构可以使得程序更加健壮,具有更高的容错性,不会因为用户不小心错误输入而造成程序崩溃,也可以使用异常处理结构为用户提供更加友好的提示。有效地软件测试能够在软件发布之前发现尽可能多的Bug,而软件发布之后再出现错误时是否能够调试程序并快速定位和解决存在的问题则是程序员综合水平和能力的重要体现。

转载于:https://www.cnblogs.com/avention/p/8810974.html

第 7 章 异常处理结构、代码测试与调试相关推荐

  1. 《C++ Concurrencyin Action》第10章--多线程程序的测试和调试

    本章主要内容 · 并发相关的错误 · 定位错误和代码审查 · 设计多线程测试用例 · 多线程代码的性能 目前为止,我们了解如何写并发代码--可以使用哪些工具,这些工具应该如何使用.不过,在软件开发中重 ...

  2. 代码测试,调试与优化小结

    http://www.cppblog.com/cuijixin/default.html?page=8 代码测试.调试与优化的小结 by falcon<zhangjinw@gmail.com&g ...

  3. 《Go语言圣经》学习笔记 第二章 程序结构

    Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...

  4. iOS 覆盖率检测原理与增量代码测试覆盖率工具实现

    背景 对苹果开发者而言,由于平台审核周期较长,客户端代码导致的线上问题影响时间往往比较久.如果在开发.测试阶段能够提前暴露问题,就有助于避免线上事故的发生.代码覆盖率检测正是帮助开发.测试同学提前发现 ...

  5. 警惕Python编程中异常处理结构可能的坑

    推荐一本用于修炼Python编程内功的好书<Python程序设计开发宝典>(本文封面图片),扫码了解详情(京东链接): ============================== 所谓异 ...

  6. 1.第三章 选择结构(一)

    1.第三章 选择结构(一) 1.概念 A:嗨,我们晚上去吃个排骨汤吧 B:我现在牙还在疼,如果到晚上的时候不疼了我们就一起去 2. 什么是if选择结构 1.语法: if () { // 括号里必须是布 ...

  7. ios 单元测试覆盖率怎么查看_iOS 覆盖率检测原理与增量代码测试覆盖率工具实现...

    背景 对苹果开发者而言,由于平台审核周期较长,客户端代码导致的线上问题影响时间往往比较久.如果在开发.测试阶段能够提前暴露问题,就有助于避免线上事故的发生.代码覆盖率检测正是帮助开发.测试同学提前发现 ...

  8. 【CISSP备考笔记】第6章:安全评估与测试

    第六章:安全评估与测试 6.1 审计策略 信息系统的安全审计是对特定范围的人/计算机/过程和信息的各种安全控制所实施的一个系统性评估. 安全审计流程:确定目标--适合的业务部分领导参与--确定范围-- ...

  9. 并行算法设计与性能优化 刘文志 第4章 串行代码性能优化

    一方面,串行代码优化有时能获得成千上万倍的加速:另一方面因为单个并行控制流的内部依旧是串行的. 一般而言,不同算法上的优化是最有效的.假设你已经有了一个能得到正确结果的程序,需要在此基础上进行优化,本 ...

最新文章

  1. 08-01-json-loggin-模块
  2. 计算机网络基础实验简答题,计算机网络基础实验报告.doc
  3. 22_2D函数优化实例
  4. C++工作笔记-stl中map基础用法(插入,遍历,删除)
  5. python编程跳一跳_使用Python实现跳一跳自动跳跃功能
  6. delphi BLE 后台
  7. mysql5.7.10 performance_schema_MySQL的show profile简介以及该功能在MySQL 5.7中performance_schema中的替代...
  8. 取出大文件里面的一部分数据
  9. redis 如何查看某个库的key_如何发现 Redis 热点 Key ,解决方案有哪些?
  10. Vue学习三:安装axios(实现http请求后端)
  11. 正态分布推导瑞利分布,瑞利信道的模型
  12. 产品功能树图_新版PFMEA培训之第三步功能分析,理清结构,梳理思路
  13. 计算机vb题库程序代码编写,计算机二级考试.题库-vb程序题
  14. fiddler抓包视频
  15. C# OpenCv 证件照换底色
  16. 谷歌浏览器清除百度广告
  17. css 侧栏跟随_JS+CSS实现侧边栏跟随浏览器滚动效果
  18. Android 11.0 12.0TvSettings系统设置遥控器home键退不出主页面功能的修复
  19. webrtc 带宽估计
  20. JNI系列(一)JNI简介

热门文章

  1. 推荐一个markdown格式转html格式的开源JavaScript库
  2. php dvld.active 1,PHP的字符串
  3. addeventlistener事件第三个参数 passive_JS DOM 事件流、事件冒泡
  4. android sqlite触发器,SQLite---使用触发器(Trigger)
  5. python中组合与继承的区别_python类与对象的组合与继承
  6. 剑灵力士卡刀ahk_技术宅教你:召唤代码一键卡刀详细教程帖
  7. java 镶嵌创建线程_Java多线程——之一创建线程的四种方法
  8. python 线性回归 优化_python – 线性回归实现总是比sklearn更糟糕
  9. linux学到了什么技术,Linux到底学什么?如何学?
  10. C++基础复习——C++语言数据类型