2010-01-21 53 views
2

我认为这是一个愚蠢的问题,但我听到并看到很多处理异常处理。我用try/catch,但我仍然想知道在地球上'处理'的意思。任何人都可以举一些例子,我们可以说例外实际上是'处理'?有人可以请我解释异常处理吗?

对不起英文,希望我明确自己。

+1

这是一个常见的英文单词。来自Merriem-Webster Dictionary:*“针对或采取必要行动。”*说一个问题已被“处理​​”意味着它已被处理,解决,完成。 – 2010-01-21 19:16:00

+1

@BlueRaja,我知道英文单词'handling'的含义。 “ – Benny 2010-01-21 19:19:51

回答

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是后者的一个例子。)

+0

”这样你的应用程序就可以优雅地处理它了“ - 他只是说他不知道*”处理“*的意思...... – 2010-01-21 19:18:25

+1

是的,这就是为什么我提供了一个例子 - 你知道,这篇文章的90%来自你引用的那一行之后。积极主动的思考和所有这一切。 – danben 2010-01-21 19:24:39

3

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

它与异常吞咽形成鲜明对比,异常吞咽是捕捉异常并且不做任何事情。

6

“处理”基本上包括优雅地处理错误 - 而不是做出假设并让程序炸毁。

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

0

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

1

在简单的层面上,'处理'仅仅意味着'处理'。

例如,你可能......

  • 记录错误数据到文件或数据库
  • 显示错误消息给用户
  • 终止程序

的执行..depending上的错误的严重程度/你正在开发的应用程序。

1

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

当您收到异常时,您可以通过纠正引起异常并继续进行的任何操作来“处理”该异常。

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

2

异常处理是指在程序中处理异常事件的操作,这样程序不会崩溃,而是继续以有意义的方式运行。你说你已经使用了try/catch,那么无论你在catch-block中做什么都是实际的异常处理。