异常处理(异常处理三原则)

更新时间:2023-02-28 21:32:22 阅读: 评论:0

异常处理的3原则是

异常处理的3原则是:

1、能处理就早处理,抛出不去还不能处理的就想法消化掉或者转换为RuntimeException处理。因为对于一个应用系统来说,抛出大量异常是有问题的,应该从程序开发角度尽可能的控制异常发生的可能。

2、对于检查异常,如果不能行之有效的处理,还不如转换为RuntimeException抛出。这样也让上层的代码有选择的余地――可处理也可不处理。

3、对于一个应用系统来说,应该有自己的一套异常处理框架,这样当异常发生时,也能得到统一的处理风格,将优雅的异常信息反馈给用户。


扩展资料:

各种编程语言在处理异常方面具有非常显著的不同点(错误检测与异常处理区别在于:错误检测是在正常的程序流中,处理不可预见问题的代码,例如一个调用操作未能成功结束)。某些编程语言有这样的函数:当输入存在非法数据时不能被安全地调用,或者返回值不能与异常进行有效的区别。

例如,C语言中的atoi函数(ASCII串到整数的转换)在输入非法时可以返回0。在这种情况下编程者需要另外进行错误检测(可能通过某些辅助全局变量如C的errno),或进行输入检验(如通过正则表达式),或者共同使用这两种方法。

通过异常处理,我们可以对用户在程序中的非法输入进行控制和提示,以防程序崩溃。

从进程的视角,硬件中断相当于可恢复异常,虽然中断一般与程序流本身无关。

从子程序编程者的视角,异常是很有用的一种机制,用于通知外界该子程序不能正常执行。如输入的数据无效(例如除数是0),或所需资源不可用(例如文件丢失)。如果系统没有异常机制,则编程者需要用返回值来标示发生了哪些错误。

参考资料来源:百度百科——异常处理


计算机中异常处理是什么?

错误处理就是根据不同异常做的备用方案及处理方法。常见的说法叫异常处理。
1.由于 Lua 是一门嵌入式扩展语言,其所有行为均源于宿主程序中 C 代码对某个 Lua 库函数的调用。 (单独使用 Lua 时,lua 程序就是宿主程序。) 所以,在编译或运行 Lua 代码块的过程中,无论何时发生错误, 控制权都返回给宿主,由宿主负责采取恰当的措施(比如打印错误消息)。
2.可以在 Lua 代码中调用 error 函数来显式地抛出一个错误。 如果你需要在 Lua 中捕获这些错误, 可以使用 pcall 或 xpcall 在 保护模式 下调用一个函数。
无论何时出现错误,都会抛出一个携带错误信息的 错误对象 (错误消息)。 Lua 本身只会为错误生成字符串类型的错误对象, 但你的程序可以为错误生成任何类型的错误对象, 这就看你的 Lua 程序或宿主程序如何处理这些错误对象。
3.使用 xpcall 或 lua_pcall 时, 你应该提供一个 消息处理函数 用于错误抛出时调用。 该函数需接收原始的错误消息,并返回一个新的错误消息。 它在错误发生后栈尚未展开时调用, 因此可以利用栈来收集更多的信息, 比如通过探知栈来创建一组栈回溯信息。 同时,该处理函数也处于保护模式下,所以该函数内发生的错误会再次触发它(递归)。 如果递归太深,Lua 会终止调用并返回一个合适的消息。
。 如果你需要在 Lua 中捕获这些错误, 可以使用 pcall 或 xpcall 在 保护模式 下调用一个函数。
4.无论何时出现错误,都会抛出一个携带错误信息的 错误对象 (错误消息)。 Lua 本身只会为错误生成字符串类型的错误对象, 但你的程序可以为错误生成任何类型的错误对象, 这就看你的 Lua 程序或宿主程序如何处理这些错误对象。

5.可以在 Lua 代码中调用 error 函数来显式地抛出一个错误。 如果你需要在 Lua 中捕获这些错误, 可以使用 pcall 或 xpcall 在 保护模式 下调用一个函数。
6.无论何时出现错误,都会抛出一个携带错误信息的 错误对象 (错误消息)。 Lua 本身只会为错误生成字符串类型的错误对象, 但你的程序可以为错误生成任何类型的错误对象, 这就看你的 Lua 程序或宿主程序如何处理这些错误对象。
7.使用 xpcall 或 lua_pcall 时, 你应该提供一个 消息处理函数 用于错误抛出时调用。 该函数需接收原始的错误消息,并返回一个新的错误消息。 它在错误发生后栈尚未展开时调用, 因此可以利用栈来收集更多的信息, 比如通过探知栈来创建一组栈回溯信息。 同时,该处理函数也处于保护模式下,所以该函数内发生的错误会再次触发它(递归)。 如果递归太深,Lua 会终止调用并返回一个合适的消息。


计算机中异常处理有什么方式?

try 语句可为一组语句指定异常处理器和/或清理代码:
1.子句指定一个或多个异常处理程序。 当 try 子句中没有发生异常时,没有任何异常处理程序会被执行。 当 try 子句中发生异常时,将启动对异常处理程序的搜索。 此搜索会逐一检查 except 子句直至找到与该异常相匹配的子句。 如果存在无表达式的 except 子句,它必须是最后一个;它将匹配任何异常。 对于带有表达式的 except 子句,该表达式会被求值,如果结果对象与发生的异常“兼容”则该子句将匹配该异常。 如果一个对象是异常对象所属的类或基类,或者是包含兼容该异常的项的元组则两者就是兼容的。
2.如果没有 except 子句与异常相匹配,则会在周边代码和发起调用栈上继续搜索异常处理器。 1
3.如果在对 except 子句头中的表达式求值时引发了异常,则原来对处理器的搜索会被取消,并在周边代码和调用栈上启动对新异常的搜索(它会被视作是整个 try 语句所引发的异常)。
当找到一个匹配的 except 子句时,该异常将被赋值给该 except 子句在 as 关键字之后指定的目标,如果存在此关键字的话,并且该 except 子句体将被执行。 所有 except 子句都必须有可执行的子句体。 当到达子句体的末尾时,通常会转向整个 try 语句之后继续执行。 (这意味着如果对于同一异常存在有嵌套的两个处理器,而异常发生于内层处理器的 try 子句中,则外层处理器将不会处理该异常。)
4.当使用 as 将目标赋值为一个异常时,它将在 except 子句结束时被清除。 这就相当于
这意味着异常必须赋值给一个不同的名称才能在 except 子句之后引用它。 异常会被清除是因为在附加了回溯信息的情况下,它们会形成堆栈帧的循环引用,使得所有局部变量保持存活直到发生下一次垃圾回收。
5.函数的返回值是由最后被执行的 return 语句所决定的。 由于 finally 子句总是被执行,因此在 finally 子句中被执行的 return 语句总是最后被执行的:

当找到一个匹配的 except 子句时,该异常将被赋值给该 except 子句在 as 关键字之后指定的目标,如果存在此关键字的话,并且该 except 子句体将被执行。 所有 except 子句都必须有可执行的子句体。 当到达子句体的末尾时,通常会转向整个 try 语句之后继续执行。 (这意味着如果对于同一异常存在有嵌套的两个处理器,而异常发生于内层处理器的 try 子句中,则外层处理器将不会处理该异常。)


异常处理的名词解释

异常处理,英文名为exceptional handling, 是代替日渐衰落的error code方法的新法,提供error code 所未能具体的优势。异常处理分离了接收和处理错误代码。这个功能理清了编程者的思绪,也帮助代码增强了可读性,方便了维护者的阅读和理解。
异常处理(又称为错误处理)功能提供了处理程序运行时出现的任何意外或异常情况的方法。异常处理使用 try、catch 和 finally 关键字来尝试可能未成功的操作,处理失败,以及在事后清理资源。
异常处理通常是防止未知错误产生所采取的处理措施。异常处理的好处是你不用再绞尽脑汁去考虑各种错误,这为处理某一类错误提供了一个很有效的方法,使编程效率大大提高。
异常可以由公共语言运行库(CLR)、第三方库或使用 throw 关键字的应用程序代码生成。


开发中异常处理有哪些方法呢?

异常处理可以通过编程处理选择的异常是可行的。

1.看一下下面的例子:它会一直要求用户输入,直到输入一个合法的整数为止,但允许用户中断这个程序(使用 Control-C 或系统支持的任何方法)。注意:用户产生的中断会引发一个 KeyboardInterrupt 异常。
>>> while True:
... try:
... x = int(input("Plea enter a number: "))
... break
... except ValueError:
... print("Oops! That was no valid number. Try again...")
...
2.try 语句按如下方式工作。
首先,执行 try 子句 (在 try 和 except 关键字之间的部分)。
如果没有异常发生, except 子句 在 try 语句执行完毕后就被忽略了。
如果在 try 子句执行过程中发生了异常,那么该子句其余的部分就会被忽略。
如果异常匹配于 except 关键字后面指定的异常类型,就执行对应的except子句。然后继续执行 try 语句之后的代码。
如果发生了一个异常,在 except 子句中没有与之匹配的分支,它就会传递到上一级 try 语句中。
如果最终仍找不到对应的处理语句,它就成为一个 未处理异常,终止程序运行,显示提示信息。
一个 try 语句可能包含多个 except 子句,分别指定处理不同的异常。至多只会有一个分支被执行。异常处理程序只会处理对应的 try 子句中发生的异常,在同一个 try 语句中,其他子句中发生的异常则不做处理。一个 except 子句可以在括号中列出多个异常的名字,例如:
... except (RuntimeError, TypeError, NameError):
... pass
最后一个 except 子句可以省略异常名称,以作为通配符使用。你需要慎用此法,因为它会轻易隐藏一个实际的程序错误!可以使用这种方法打印一条错误信息,然后重新抛出异常(允许调用者处理这个异常):


生产异常的处理方法有哪些?

在生产过程中,生产日计划不能够执行到位,很多时候并不是计划本身有问题,而是在执行计划的过程中,产品在生产的过程中会出现各类异常。生产异常主要有来料品质的异常、人员的异常、制程品质的异常等等。
在生产过程中因为有这些异常,就会出现瓶颈,在中小企业的生产过程中,这些异常和瓶颈是时时会发生的,要想让生产计划能够准时完成,就必须要有一套快速应对、快速处理异常的机制。
任何异常都是逐渐或临时偏离标准发生的,小的异常处理不及时或不当,就可能因发生多米诺骨牌效应而按照几何级数演变成大的异常。因此,对生产异常的分析与防范、及时响应、规范处理,是每个企业都迫切需要关注的焦点问题,同时这也是中小企业工厂生产管理的重点。
人为因素导致的异常处理
进行岗位操作培训是预防人为因素导致生产异常的最基本解决方法之一。特别是对于新员工,培训不合格者严禁上岗。要求员工熟练掌握并严格遵守本岗位的作业要领或生产作业操作规程,加强生产过程控制。
建立有效沟通机制是快速找出生产异常发生原因的关键措施之一。不论是否发生生产异常现象,企业管理者都应树立“以人为本”的态度,建立一个长效沟通机制。有则修正,无则加勉,积极应对。
对操作人员实行权限分级与岗位分级管理,不同权限的人员操作不同的内容,不同岗位的人员操作不同岗位内容,减少工作任务的交叉和重叠,实施“定岗、定编、定人、定责”规范人员管理,减少因人的因素导致的异常问题。
生产原材料异常处理
加强原材料的进厂检验和使用前核对工作,确保每道工序使用物料的正确性。生产计划下达后,相关人员需要立即确认物料状况,查验物料有无短缺,即物料库存数量是否满足生产,进行动态的跟踪和反馈,避免异常的发生。

生产工艺方法异常处理
避免操作方法异常的发生,最首要的任务便是标准作业指导书的制定及实施,不断优化生产工艺技术参数,保证产品加工质量。保持工装和夹具的精度,并定期检测和维护。加强关键工序和特殊工序的过程控制。
严肃工艺纪律,检查和监督员工是否真正贯彻执行生产操作规程,杜绝私自更改工艺和图纸。当工艺异常发生后,迅速通知品管、生技或研发等部门,立即采取应对措施。

产品品质异常处理
对生产难度大、不良品较多以及特殊要求的产品,应在生产前做好重点规划,异常发生时,迅速用警示灯、电话或其他有效方式迅速通知品管部及相关部门,减少和杜绝异常的发生。加强产品首检、自检、抽检和互检,根据产品的质量要求及复杂程度适当增加专检频次。加强质检人员的质量否决权,管理人员随时巡检,产品销售出库时严格进行检验,杜绝不合格品入库、出厂。
生产部协助品管、责任部门一起研究对策,配合临时对策的实施,以确保生产任务的完成。做好后续的记录,运用QC工具(如柏拉图、因果分析图、直方图等)进行统计分析,积极寻找根治异常的方法。
生产计划的异常处理
根据市场发展的趋势,在制定生产计划时要具有一定弹性,以便出现异常时可以根据实际情况迅速合理的调整计划。
安排因计划调整而遗留的产品、半成品、原材料的盘点、入库、清退等处理工作,安排人员以最快速度做好计划更换的物料、设备等准备工作。
质量管理系统辅助
该系统实现质量信息数据化、实时化,采集方式多样化,遵循QC七大手法进行品质异常处理,自动生成MRB/8D报告,多端兼容,实现质量跟踪、缺陷预测、预警与防伪溯源等全流程大数据服务。

本文发布于:2023-02-28 18:57:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/167759114248155.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:异常处理(异常处理三原则).doc

本文 PDF 下载地址:异常处理(异常处理三原则).pdf

标签:异常   三原则
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|