首页 > 解决方案 > try/catch 块捕获异常有什么意义?

问题描述

为什么我们需要 try/catch 块来捕获代码中可能出现的任何异常?一旦我们运行程序并假设我们有一个 RuntimeException,程序不会自动中止并给我们错误吗?那么为什么我们需要 try/catch 块来为我们做这件事呢?

标签: javaexception

解决方案


这只是一个好习惯。如果用户收到类似“IndexOutOfrangeexception”的信息,他将如何处理?假设一切正常,他应该重新开始吗?如果使用软件做一些工作,工作会丢失吗?发生了什么?

把自己置于这样的境地:你下载了一些软件,你开始正常使用它,你对它很满意。但是有一天你运行程序并且它给你错误并且程序死了 - 你知道发生了什么吗?不,你知道出了什么问题吗?不。您知道如何防止它并开始使用软件以使错误不再发生吗?不。

你是开发者,你知道里面发生了什么。例如,您试图将数据保存在数据库中,但不知何故连接丢失,您可能会遇到异常 - 在 catch 块中,您可以捕获此异常并为用户提供有意义的信息,例如“与数据库的连接丢失。检查网络。你的数据没有保存,你应该重新开始工作。” - 这不是比堆栈跟踪旁边的一些“SQL异常”更好吗?

此外,catch/finally 块用于清理潜在的混乱,例如您正在将一些内容写入文件,但只有当您可以写入所有数据时才有意义,而不仅仅是其中的一部分。因此,在 catch 块中,您可以擦除不完整的数据,例如文件不会损坏。

此外,在使用非托管资源时,您应该使用 finally 块来清理它们(例如 DB/netowrk 连接)。


推荐阅读