当前位置: 首页 > news >正文

错误与异常之为何要异常

为什么用异常

毫无疑问,错误的存在会伴随着软件的存在.区别在于当今快节奏的计算世界, 我们的执行环境 已经改变, 所以我们需要改变错误处理, 以准确反映我们软件的开发环境. 就现今应用来说, 普遍 的是自洽(self-contained)的图形用户界面(GUIs)或是客户机/服务器体系, 例如 Web.在应用层处理错误的能力近来变得更为重要, 用户已不再是应用程序的的唯一的直接运行者. 随着互联网和网上电子商业应用越来越普及, web 服务器将成为应用软件的主要客户. 这意味着应用 程序再也不能只是直接的失败或崩溃, 因为如果这样, 系统错误导致浏览器的错误, 这反过来又会让用户沮丧. 失去眼球意味着失去广告收入和和潜在的大量无可挽回的生意.

如果错误的确发生了, 它们一般都归因于用户输入的数据无效. 运行环境必须足够强健,来处 理应用级别的错误,并提供用户级别的错误信息.就服务器而言,这必须转化为一个"非错误" . 因为 应用必须要成功的完成, 即使所做的不过是返回一个错误的信息, 向用户是提供一个有效的超文本 标记语言(HTML)的网页指明错误.

如果你不清楚我在说什么, 那个一个简单的网页浏览器窗口,用大而黑的字体写到"内部服务器 错误"是否更耳熟?用一个弹出式窗口宣告"文件中没有数据"的致命错误如何?作为一个用户, 这 些词语对你有意义吗?没有, 当然没有(除非你是一个互联网软件工程师), 至于对普通用户来说, 这些是无休止的混乱和挫折感的来源. 这些错误导致在执行的程序时的失败. 应用不论是返回无效 的超文本传输协议( http)数据还是致命地终止, 都会导致Web服务器举手投降, 说:"我放弃" !

这种类型的执行错误不应该被允许, 无论情况如何. 随着系统变得更加复杂, 又牵涉到更多的 新手用户, 要采取额外的措施, 确保用户平滑的学到应用经验. 即使面对一个错误, 应用应该成功 的中止, 不至于灾难性的影响其执行环境. Python 异常处理促使成熟和正确的编程.

到底为什么要异常?

如果上文的动机不够充分, 试想 Python 编程没有程序级的异常处理. 第一件事需要担心的是客

相关文章:

  • Dockerfile的使用,怎样制作镜像
  • linux应用程序需要编写的脚本
  • HTML—基本介绍
  • 【吊打面试官系列】Java虚拟机JVM篇 - 关于类加载器的JVM面试题
  • React基础
  • 银河麒麟服务器操作系统V10【vnc配置多用户登录】
  • 实时大数据流处理技术:Spark Streaming与Flink的深度对比
  • 产品推荐 - 基于星嵌 OMAPL138+国产FPGA的DSP+ARM+FPGA三核开发板
  • Matlab|2机5节点牛拉法(含报告)
  • Spring Cloud微服务在Windows本地开发时禁用Nacos注册中心注册
  • linux centos系统搭建samba文件服务器 NetBIOS解析 (超详细)
  • 【控制台警告】npm WARN EBADENGINE Unsupported engine
  • 【elasticsearch】ES的JAVA工具类完整版(待完成...)
  • 【leetcode热题】重排链表
  • 二维码门楼牌管理系统在教育领域的应用及其优势
  • [译] React v16.8: 含有Hooks的版本
  • 2018一半小结一波
  • httpie使用详解
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Javascript基础之Array数组API
  • Java程序员幽默爆笑锦集
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 京东美团研发面经
  • 十年未变!安全,谁之责?(下)
  • 手写一个CommonJS打包工具(一)
  • 算法之不定期更新(一)(2018-04-12)
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • Python 之网络式编程
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​ssh免密码登录设置及问题总结
  • # 计算机视觉入门
  • #{}和${}的区别是什么 -- java面试
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (TOJ2804)Even? Odd?
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (算法设计与分析)第一章算法概述-习题
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • .htaccess配置重写url引擎
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • [20150904]exp slow.txt
  • [Apio2012]dispatching 左偏树
  • [hihocoder1395] 最大权闭合子图
  • [HTML]HTML5实现可编辑表格
  • [iOS]iOS获取设备信息经常用法
  • [Jenkins] Docker 安装Jenkins及迁移流程
  • [JMS 3] ActiveMQ实现简单的helloworld
  • [Linux]文件基础-如何管理文件
  • [Machine Learning][Part 7]神经网络的基本组成结构
  • [NISACTF 2022]level-up
  • [Oracle]如何观察Table 的各种Lock 之间的冲突