JavaRush /Java 博客 /Random-ZH /喝咖啡休息#158。Java 中处理异常的 10 个技巧

喝咖啡休息#158。Java 中处理异常的 10 个技巧

已在 Random-ZH 群组中发布
来源:Medium 这篇文章将帮助您更好地了解如何在 Java 中有效地处理异常。 喝咖啡休息#158。 Java 中处理异常的 10 个技巧 - 1处理 Java 异常可能具有挑战性。确定要处理哪些 Java 异常、要重新抛出哪些异常以及要忽略哪些异常可能很困难。但是,有许多有用的指南可以有效地帮助您处理异常并创建新的应用程序。让我们来认识一下他们吧。
  1. 小心你记录的内容。
  2. 不要忽略抛出的异常。
  3. 使用全局异常处理程序。
  4. 不要手动关闭资源。
  5. 尽早抛出并稍后处理异常。
  6. Java 异常不应被记录并重新引发。
  7. 检查抑制的异常。
  8. 在 throw 语句中,准确地声明异常。
  9. 首先处理最明显的异常。
  10. 使用现代异常处理语义。

1. 小心你记录的内容

软件开发人员应始终了解客户的安全和隐私权。
  • Java 程序可以将数据移动到其他系统,并且大量的开发人员和管理员可以使用它(包括修复错误)。
  • 如果日志文件中记录了任何敏感数据,您的公司将不符合安全要求,您可能会失去工作。

2. 不要忽略抛出的异常

不要捕获异常然后忽略它。在 Java 中隐藏异常并不是处理异常的好方法。至少写下异常的名称和关联的消息。这样,就可以在您的条目中找到有关该问题的信息。由于隐藏异常而调试 Java 应用程序非常困难。

3.使用全局异常处理程序

在程序执行期间,总会出现一些代码中以前未捕获的异常。因此,始终添加一个全局异常处理程序来处理未捕获的异常。这不仅允许记录和处理异常,而且还可以防止在运行时抛出异常时应用程序崩溃。

4.不要手动关闭资源

处理 Java 异常时的另一个重要建议是允许 JVM对正在关闭的资源调用close()方法。不要尝试自己关闭它们。这可以通过初始化try-resources模块内的资源来轻松实现。语义:
public class TryWithResourcesExample {

public static void main(String[] args) throws Exception {

try (Door door = new Door()) {

door.swing();

} catch (Exception e) { ..... }

} finally { .....}

}

}
正如您所看到的,在 try...catch 块完成后,JVM 会为您关闭资源,从而消除了复杂且难以修复的资源泄漏的可能性。

5. 尽早抛出并稍后处理异常

每当代码中出现异常情况时,就引发异常。不要等待任何代码行执行后再退出您所在的方法。捕获异常时,函数必须放在方法的末尾。这减少了方法中的catch块的数量,使代码更易于阅读和维护。

6. Java异常不应该被记录和重新抛出

如果发生异常,请执行以下操作之一:
  • 在记录异常的同时继续使用您的程序。
  • 再次引发异常并允许采用不同的方式记录数据。
不要将两个阶段结合起来。切勿记录并重新抛出相同的异常,如下例所示:
try {

Class.forName("com.min.Example");

} catch (ClassNotFoundException ex) {

log.warning("Class was not found.");

throw ex;

}
这会导致代码重复和日志文件被重复条目堵塞,从而使诊断代码变得更加困难。

7. 检查被抑制的异常

抑制异常是一项新的语言功能,并非所有开发人员都了解。通过使用资源实现经过验证的方法,可以同时抛出两个异常。通过查询是否存在受抑制的异常,可以轻松检查此情况。确定是否发生此情况的唯一方法是查看目标异常是否也包含受抑制的异常。

8. 使用 throw 语句时,指定具体的异常

通过在方法体内使用 throw 语句,粗心的开发人员可能会使用通用异常类。但这并不是Java中处理异常的最佳方式。相反,请始终指定该方法可能抛出的确切异常。它可以帮助其他开发人员了解当某种方法未按预期工作时可以使用的不同错误处理技术。

9. 首先处理最明显的异常

这更多的是编译器的要求,而不是 Java 异常处理实践的技巧,但开发人员应该始终首先处理最明显的异常,最后处理最不确定的异常。如果不遵循此规则,JVM 将返回编译时错误,并带有非常神秘且难以理解的错误消息。通过始终处理代码中的某些异常,让软件开发人员的生活变得更轻松。

10.使用现代异常处理语义

Java 提供了许多错误和异常处理功能,可以简化开发并显着减少 Java 代码量。使用在单个catch块中处理多个异常的功能,并使用try块自动关闭资源。使用运行时异常,这样其他开发人员就不必处理您抛出的异常。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION