错误与异常之为何要异常

为什么用异常

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

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

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

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

到底为什么要异常?

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/731466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

精通ChatGPT:掌握高效Prompt设计的艺术与科学

精通ChatGPT:掌握高效Prompt设计的艺术与科学 在人工智能的迅猛发展中,自然语言处理(NLP)技术已经成为了一个热门的话题。OpenAI推出的ChatGPT是基于强大的GPT-3模型,它通过深度学习的方法训练出能够理解和生成人类语…

Java面试——Netty

优质博文:IT-BLOG-CN 一、BIO、NIO 和 AIO 【1】阻塞 IO(Blocking I/O): 同步阻塞I/O模式,当一条线程执行 read() 或者 write() 方法时,这条线程会一直阻塞直到读取一些数据或者写出去的数据已经全部写出,在这期间这条…

泛微OA服务器获取 token

泛微OA服务器获取 token 文章目录 泛微OA服务器获取 token一、泛微官方方法1 ecology 系统配置2 发放/生成许可证(appid)3 限制许可证使用ip地址(该步骤也可以跳过)4 使用 postman 注册5 获取 token6 访问业务系统接口 二、java 代码获取 token三、封装到…

ospf介绍

Ospf首先是一种内部网关协议,其描述的路由信息属于同一个自制系统。所谓自制系统,即属于该自制系统的路由器都必须使用同一种内部网关协议。在这里,即为ospf。 Ospf的一些常用术语:Ospf协议的内容比较丰富,涉及的术语、定义较多。在这里有一些常用的定义: 自制系统(AS)…

4 AI系统的测试关键技术和实践

4 AI系统的测试关键技术和实践 4.1 功能测试的困局 在传统系统的功能测试中,测试工程师无论是做手工测试还是自动化测试,都必须先设计和开发测试用例,然后才能利用测试用例完成测试工作,给出测试结论。从这里可以看出,测试用例是测试工作中很重要的产出物。IEEE 610在19…

20240308-2-校招前端面试常见问题-网络及浏览器

校招前端面试常见问题【4】——网络及浏览器 1、网络相关 Q:请简述一下 HTTP 协议,以及 HTTP1.0/1.1/2.0/3.0 的区别? HTTP 协议:超文本传输协议,使用 TCP/IP 协议传输数据。是一个应用层的协议。 HTTP1.0&#xff…

特性螺旋面的刀具设计记录

最近和成型类刀具杠上了,这不最近有小伙伴提供了两个比较特殊的螺旋面工件,通常称作阴、阳转子。具体形状如下: 阴转子 阴转子端面齿形没看出有什么特殊的,但是在轴剖面齿形是内凹的,这个是比较特殊的形式。 阳转子…

FFmpeg--音频解码流程:aac解码pcm

文章目录 音频解码流程API分析:伪代码code: 音频解码流程 aac—音频解码器–pcm数据 API avcodec_find_decoder:根据指定的AVCodecID查找注册的解码器 av_parser_init:初始化AVCodecParserContext avcodec_alloc_context3:为AV…

信息系统项目管理师003:信息化(1信息化发展—1.1信息与信息化—1.1.3 信息化)

文章目录 1.1.3 信息化1.信息化内涵2.信息化体系3.信息化趋势 要点总结 1.1.3 信息化 信息化是一个过程,与工业化、现代化一样,是一个动态变化的过程。信息化是指培养、发展以计算机为主的智能化工具为代表的新生产力,并使之造福于社会的历史…

目标检测:Anchor-free算法模型

下面几篇论文在目标领域内被广泛认为是具有里程碑意义的,它们引入了一些基本概念和方法,对后续的研究产生了深远的影响: 1. DenseBox 虽然不完全是今天所讨论的anchor-free检测方法,但DenseBox是较早采用端到端方式进行目…

Qt自定义控件

自定义控件 目的:将多个控件或者窗口作为一个整体被多次复用。 操作方式 1.首先进行自定义的ui设计,以及对应的.h和.cpp文件 2.到要使用的UI界面上,从控件库中拖拽一个Widget控件 3.右键点击"提升为" 4.填写自定义实现的类名&…

Qt连接所有同类部件到同一个槽函数

void MainWindow::AutoConnectSignals() {// 查找所有 QSpinBoxconst auto spinBoxes findChildren<QSpinBox*>();for (auto *spinBox : spinBoxes){connect(spinBox, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &ParameterW…

Mysql的Cardinality值

什么是Cardinality值&#xff1f; Cardinality值是Mysql做索引优化时一个非常关键的值&#xff0c;优化器会根据这个值来判断是否使用这个索引&#xff0c;它表示索引中唯一值的数目估计值&#xff0c;该值应该尽可能接近1&#xff0c;如果非常小&#xff0c;则用户需要考虑是否…

如何使用 CSS 防止换行

简介 开发人员通常喜欢在网页上对文本进行换行。换行会以某种方式限制文本&#xff0c;防止设计问题。文本换行还可以防止水平滚动。但有时候&#xff0c;您希望文本块保持在同一行&#xff0c;不考虑长度。您可以使用 CSS 的 white-space 属性来防止特定元素的换行和文本换行…

7. 交叉开发环境设置

嵌入式交叉编译工具 ​ 交叉编译工具是为了使在上位机中编译的文件能够在不同平台的目标机中执行&#xff0c;搭建交叉编译环境是嵌入式开发的第一步&#xff0c;也是关键的一步。不同的体系结构、不同的操作系统&#xff0c;甚至是不同版本的内核&#xff0c;都会用到不同的交…

win11中微软商店如何使用微信支付?microsoft store支付教程

Microsoft Store是由微软公司提供的一个数字分发平台&#xff0c;用于购买和下载Windows操作系统及其相关应用、游戏、音乐、电影、电视节目和其他数字内容。该平台最初是作为Windows 8的一部分引入的&#xff0c;后来也适用于Windows 10和其他Microsoft平台。 以下是Microsof…

ESP32系列四:搭建http的webserver的服务器

最近在使用ESP32搭建web服务器测试&#xff0c;发现esp32搭建这类开发环境还是比较方便的。具体的http协议这里就不再赘述&#xff0c;我们主要说一下如何使用ESP32提供的API来搭建我们的http web。 一、web服务器搭建过程 1、配置web服务器 在ESP-IDF中&#xff0c;Web服务…

JavaWeb笔记 --- 一JDBC

一、JDBC JDBC就是Java操作关系型数据库的一种API DriverManager 注册驱动可以不写 Class.forName("com.mysql.jdbc.Driver"); Connection Statement ResultSet PrepareStatement 密码输入一个SQL脚本&#xff0c;直接登录 预编译开启在url中 数据库连接池

HTML5+CSS3+JS小实例:暗紫色Tabbar

实例:暗紫色Tabbar 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scal…

【梳理】k8s使用Operator搭建Flink集群

文章目录 架构图安装cert-manager依赖helm 安装operator运行集群实例k8s上的两种模式&#xff1a;Native和Standalone两种CRDemo1&#xff1a;Application 单任务Demo2&#xff1a;Session 多任务创建ingress 总结 架构图 参考&#xff1a;部署验证demo 安装cert-manager依赖 …