有人可以向我解释异常处理吗?

时间:2010-01-21 19:03:42

标签: language-agnostic exception-handling terminology

我认为这是一个愚蠢的问题,但我听到并且看到了很多例外情况处理。我使用过try / catch,但我仍然想知道“处理”的含义是什么。任何人都可以举一些例子说我们可以说例外实际上是“处理”吗?

抱歉英语不好,希望我能说清楚。

7 个答案:

答案 0 :(得分:6)

“处理”基本上包括优雅地处理错误 - 而不是做出假设,只是让你的程序爆炸。

这可能包括记录和继续进行,吞咽(隐藏它并假装它从未发生过),或显示错误并取消当前操作,或者它实际上可能包括关闭应用程序。这一切都取决于应用程序,以及异常是什么。

答案 1 :(得分:3)

异常处理是指捕获异常并处理异常。处理它可能是从它恢复,提示错误消息,或只是使用示例数据 - 什么是适当的取决于您的应用程序。在游戏中使用样本数据可能会很好,其中一个蓝色像素不会造成任何伤害,而在医疗软件中这是一个坏主意。

与吞咽异常形成鲜明对比,异常吞咽正在捕捉异常,并且没有采取任何措施。

答案 2 :(得分:3)

这意味着捕获异常并根据其类型执行某些逻辑,以便您的应用程序可以优雅地处理它而不是突然关闭。

这是Java中的一个例子(尽管是一个人为的例子):

public int arrayRetrieve(int[] a, int index) {
   return a[index]; 
}

鉴于此功能,无法保证index将成为a中的有效职位。在Java中,这将抛出ArrayOutOfBoundsException

调用arrayRetrieve的代码需要注意这种可能性,并相应地处理这种情况:

int num = 0;
try {
    num = arrayRetrieve(someArray, 77);
}  catch (ArrayOutOfBoundsException e) {
    // Set num to a default value, or log an error, or however you want to handle this case
}

如果未捕获ArrayOutOfBoundsException,则会导致程序崩溃。

(我说这个例子的一个原因是设计是因为Java特别有两种Exception - 你必须明确捕获的那种,以及你没有的那种。ArrayOutOfBoundsException是一个后者的例子。)

答案 3 :(得分:2)

异常处理是指在程序中处理异常事件的操作,使程序不会崩溃,而是以有意义的方式继续运行。你说你已经使用过try / catch,那么你在catch块中所做的就是实际的异常处理。

答案 4 :(得分:1)

简单来说,“处理”只意味着“处理”。

例如,您可能......

  • 将错误数据记录到文件或数据库
  • 向用户显示错误消息
  • 终止程序的执行

..取决于您正在开发的错误/应用程序类型的严重程度。

答案 5 :(得分:1)

它被称为异常处理,因为异常并不总是终止条件。

当你得到一个例外时,你可以通过纠正引起异常和继续的任何事情来“处理”那个例外。

例如,您可能会获得“除以零”异常。如果你有一个异常处理程序,你可以捕获异常,并修复有问题的数据,或者导致“无效数据”消息,而不是你的应用程序完全死亡。

答案 6 :(得分:0)

catch块中的代码(或您的语言使用的任何代码)是“处理”异常,或至少是它应该的。