java - try/catch 块捕获异常有什么意义?
问题描述
为什么我们需要 try/catch 块来捕获代码中可能出现的任何异常?一旦我们运行程序并假设我们有一个 RuntimeException,程序不会自动中止并给我们错误吗?那么为什么我们需要 try/catch 块来为我们做这件事呢?
解决方案
这只是一个好习惯。如果用户收到类似“IndexOutOfrangeexception”的信息,他将如何处理?假设一切正常,他应该重新开始吗?如果使用软件做一些工作,工作会丢失吗?发生了什么?
把自己置于这样的境地:你下载了一些软件,你开始正常使用它,你对它很满意。但是有一天你运行程序并且它给你错误并且程序死了 - 你知道发生了什么吗?不,你知道出了什么问题吗?不。您知道如何防止它并开始使用软件以使错误不再发生吗?不。
你是开发者,你知道里面发生了什么。例如,您试图将数据保存在数据库中,但不知何故连接丢失,您可能会遇到异常 - 在 catch 块中,您可以捕获此异常并为用户提供有意义的信息,例如“与数据库的连接丢失。检查网络。你的数据没有保存,你应该重新开始工作。” - 这不是比堆栈跟踪旁边的一些“SQL异常”更好吗?
此外,catch/finally 块用于清理潜在的混乱,例如您正在将一些内容写入文件,但只有当您可以写入所有数据时才有意义,而不仅仅是其中的一部分。因此,在 catch 块中,您可以擦除不完整的数据,例如文件不会损坏。
此外,在使用非托管资源时,您应该使用 finally 块来清理它们(例如 DB/netowrk 连接)。
推荐阅读
- python - 如何在不使用 for 循环的情况下检索具有明确列名的数据框中的每一行并写入“Hi 5”?
- java - 如何将多部分响应作为流读取和解析?
- python - 从内存中删除某些变量未初始化的特定变量(尝试除外)
- c++ - 使用 unique_ptr 和返回数据的动态成员数据
- r - 每日对数回归的拟合正态分布与 VG 分布
- javascript - 在 alpine.js 中单击事件后触发更改事件
- c++ - 如何使用来自字符串构建函数的私有成员的数据重载运算符
- python - 如何检查列表中的第一个和最后一个数字是否相同?
- python - 如何使用正则表达式模式对列进行分类?
- python - 试图消除最初的“,” - 字符串格式问题