-2

您好我有一个问题,异常处理是什么意思?还有什么时候应该和不应该使用异常处理。

4

2 回答 2

1

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

异常处理是在计算过程中对异常(需要特殊处理的异常或异常事件)的发生做出响应的过程,通常会改变程序执行的正常流程。它由专门的编程语言结构或计算机硬件机制提供。

于 2013-08-26T20:42:13.697 回答
1

“异常处理”的意思是依赖于语言的,但通常有一些处理正常程序控制之外的罕见情况(例如环境资源错误或数字问题)的概念,包括关于如何以及在何处继续程序的决定,这样这个逻辑就不必不方便地编织到代码中。

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

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

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

某些类型的异常系统,如 PL/I 或 Common Lisp,提供了一种“介于两者之间”的解决方案:可重新启动的异常,而无需像操作系统处理 CPU 异常那样对机器状态进行细致入微的处理。关键区别在于异常处理程序不是程序继续的点,异常处理程序是一个新激活的过程,在任何展开之前都会被调用。较高级别的函数可以提供异常处理程序作为对较低级别代码的一种回调,调用该异常处理程序时不必发生并破坏从较高级别代码到较低级别代码的上下文。然后,处理程序可以决定如何继续发生这种情况的较低级别的代码。

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

例如,CPU 异常处理可用于模拟丢失的机器指令(或 CPU 功能,如未对齐的内存访问)。与指令的真正硬件实现相比,这种方法性能较差,但它允许程序运行,否则无法运行。如果打算使用它的程序具有足够的性能,那就没问题了。编程语言异常处理可能在许多情况下使用,否则将应用某种返回值测试。当按顺序处理文件直到结束时,可以通过异常检测文件结束。该代码只是假设可以从文件中读取一个数据单元,而无需检查任何错误情况;当无法读取数据时,会抛出异常并在某处捕获,从而终止循环。

于 2013-08-26T20:43:35.327 回答