gpt4 book ai didi

java - 自定义异常(例如 IllegalArgumentException)以获得良好的日志信息

转载 作者:行者123 更新时间:2023-12-01 19:08:38 26 4
gpt4 key购买 nike

拥有像 IllegalArgumentException 这样的自定义异常,并在方法可以获得空引用而不是有效对象值的所有情况下抛出它,这是个好主意吗?

 public void method(String str){
if(str == null)throw new CustomIllegalArgumentException("str cannot be null");
}

我认为这样我总能看到这种非法参数异常和其他运行时异常之间的区别。

这个主意好不好?

PS:我看过这样的帖子 Avoiding != null statements

**更新:**所以我会知道这是程序员故意的异常,并且我将有清晰的日志。

最佳答案

IllegalArgumentException 是标准异常,而不是自定义异常。当参数为 null 时,通常会抛出 NullPointerException,而实际上本不应该是这样。

当标准异常适合您的特殊情况时,您通常应该更喜欢它们。另请参阅“Effective Java 第 2 版”中的第 60 条(“支持使用标准异常”)。这样做的优点之一是,您可以为您自己的代码和您使用的库中可能发生的类似情况编写一个处理程序。

为了区分异常,应该使用它们携带的字符串消息。此外,堆栈跟踪将指示异常是从您自己的代码还是从其他代码引发的。不需要额外的异常类。

创建自己的异常类可能是合理的一种情况是,您需要异常携带有关它所指示的异常情况的额外信息。在这种情况下,您仍然应该从适当的标准类派生异常,以便可以编写一个处理程序来处理来自您自己的代码和您使用的库的类似条件的异常。

另请参阅Preconditons来自谷歌的实用程序类。特别是checkNotNull()当参数为 null 时,该实用程序方法也会抛出 NullPointerException

关于java - 自定义异常(例如 IllegalArgumentException)以获得良好的日志信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9152698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com