异常处理是什么意思?

时间:2013-08-26 20:39:06

标签: exception-handling

您好,我有一个问题,异常处理是什么意思? 此外,什么时候应该例外处理&不应该被雇用。

2 个答案:

答案 0 :(得分:1)

在Google上输入异常处理后的第一个链接给了我this: -

  

异常处理是响应事件的过程,   在计算过程中,异常 - 异常或异常事件   需要特殊处理 - 经常改变正常流量   程序执行。它由专门的编程语言提供   构造或计算机硬件机制。

答案 1 :(得分:1)

“异常处理”的含义取决于语言,但通常有一些概念可以处理正常程序控制之外的罕见情况(例如环境资源错误或数字问题),包括有关如何以及在何处继续的决策该程序,因此不必将此逻辑编织到代码中。

异常处理系统通常以某种方式表示异常情况,可能由数字代码组成,或者以面向对象的方式表示异常是具有属性并通过继承相关的类,该继承用作键模式匹配机制,寻找合适的处理程序。

如何实现异常处理可能会有很大差异。一些异常处理系统,特别是那些在硬件中实现的异常处理系统,在异常处理期间精心保留所有机器状态,并且可以从引发异常的指令中精确地重新启动程序。这种类型的异常处理允许虚拟内存非常透明地工作。

其他异常处理系统通过在搜索处理程序期间“展开堆栈”来丢弃程序状态。基本假设是情况不能以详细的方式得到恢复;所有可能的是完全或部分退​​出,仔细清理资源并回滚任何类似事务的上下文。

某些类型的异常系统,如PL / I或Common Lisp,提供了“介于两者之间”的解决方案:可重启的异常,没有像操作系统处理的CPU异常那样对机器状态进行精细的详细处理。关键区别在于异常处理程序不是程序继续的点,异常处理程序是在任何展开之前调用的新激活过程。更高级别的函数可以提供异常处理程序作为对较低级别代码的一种回调,可以在不必发生的情况下调用它并销毁从较高级别代码跨越到较低级别代码的上下文。然后,处理程序可以决定如何继续发生情况的低级代码。

当应该和不应该使用异常处理时,取决于它所处理的异常处理类型(以及它具有什么样的性能影响)以及如何应用它,关于所考虑的软件的要求。即使知道所有这些,也有发表意见的空间。如果开销可以接受,异常处理系统可以用于完全不出意外的情况。

例如,CPU异常处理可用于模拟丢失的机器指令(或CPU功能,如未对齐的内存访问)。与指令的真实硬件实现相比,这种方法表现不佳,但它允许程序运行,否则无法运行。如果要使用它的程序具有足够的性能,那么它没问题。编程语言异常处理可能会在许多情况下使用,否则将应用某种返回值测试。当顺序处理文件直到结束时,可以通过异常检测文件结尾。代码简单地假定可以从文件中读取数据单元而不检查任何错误条件;当无法读取数据时,抛出异常并将其捕获到某处,从而终止循环。如果这种方法表现良好,它所带来的代码组织可能是值得的,即使文件的结尾不是意外的错误情况。