java - try/catch block 捕获异常有什么意义?

标签 java exception

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

最佳答案

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

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

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

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

此外,在使用非托管资源时,您应该使用finally block 来清理它们(例如数据库/网络连接)。

关于java - try/catch block 捕获异常有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59333474/

相关文章:

java - 尝试将 xmi 反序列化为 CAS 对象时出现 XCASParsingException

java - Java中使用ArrayList存储姓名和年龄

java.sql.SQLException : [SQLITE_CONSTRAINT]

c# - 在哪里捕获异步 WCF 调用的 EndpointNotFoundException?

bst实现中的Java参数传递

java - 支柱|使用 Javascript 为逻辑标签赋值

java - 我想在 2 秒延迟后在切换按钮的两种状态之间切换

java - Java中的异常处理

java - Java 中的 OverLimit 异常处理

JavaScript 错误 : message, 堆栈未定义,代码 7