相关疑难解决方法(0)

为什么要使用Objects.requireNonNull()?

为什么要使用Objects.requireNonNull()

我注意到Oracle JDK中使用了许多Java 8方法,如果给定的对象(参数)是NullPointerException内部抛出nullNullPointerException.

public static <T> T requireNonNull(T obj) {
    if (obj == null)
        throw new NullPointerException();
    return obj;
}
Run Code Online (Sandbox Code Playgroud)

但是null如果NullPointerException对象被解除引用,则无论如何都会抛出.那么,为什么要进行额外的空检查和抛出 Objects.requireNonNull()

一个明显的答案(或好处)是它使代码更具可读性,我同意.我很想知道Objects.requireNonNull()在方法开头使用的任何其他原因 .

java nullpointerexception java-8

158
推荐指数
5
解决办法
4万
查看次数

为什么在参数为null时抛出NullPointerException?

我在Stackoverflow上多次看到这段代码:

public void doStuff(Object anObject) {  
    if (anObject == null) {  
        throw new NullPointerException("anObject can't be null");   
    }  
    //rest of the function
}
Run Code Online (Sandbox Code Playgroud)

这是一个针对null参数的保护子句,因为传递null给需要参数为非null的函数将导致a NullPointerException.

我理解保护条件在其他情况下验证参数的重要性(即检查日期范围,负货币值,无效字符串大小等).

但是,在null 具体情况下是不是NullPointerException多余的?这与NullPointerException后来运行时抛出一个不同之处有什么不同?

注意:我用语言无关的方式询问,因为模式本身可以应用于Java和C#.

c# java null nullpointerexception

1
推荐指数
1
解决办法
3495
查看次数

Guava Preconditions RuntimeExceptions处理

据我所知,在更改某些对象状态之前,我们使用Guava Preconditions快速失败(是stackoverflow的一个很好的答案).这很好.但是它会抛出运行时异常,这不是应用程序用户最喜欢的异常(500错误等等......).所以我需要你在设计方面给我一些帮助.

我有一个声明许多方法的接口.每个方法都有必须控制的参数(例如:not null).所以在实现类中我使用如下指令:

Preconditions.checkNotNull(fooObj);
Run Code Online (Sandbox Code Playgroud)

但是,调用此API的程序可能会因运行时异常而崩溃,在本例中为NullPointerException.

那么你如何处理这些未经检查的异常呢?

谢谢.

--------编辑应用层:

  • 数据访问层

  • API声明交换DTO的方法

  • 使用Guava实现API并检查参数的过程

  • Web服务取决于流程层

java exception preconditions guava unchecked-exception

0
推荐指数
1
解决办法
345
查看次数