我认为这是一个愚蠢的问题,但我听到并且看到了很多例外情况处理。我使用过try / catch,但我仍然想知道“处理”的含义是什么。任何人都可以举一些例子说我们可以说例外实际上是“处理”吗?
抱歉英语不好,希望我能说清楚。答案 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
块中的代码(或您的语言使用的任何代码)是“处理”异常,或至少是它应该的。