Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于空指针异常避免安全措施_Java_Exception_Nullpointerexception - Fatal编程技术网

Java 关于空指针异常避免安全措施

Java 关于空指针异常避免安全措施,java,exception,nullpointerexception,Java,Exception,Nullpointerexception,请建议通过应用谨慎或防御性编码技术和空安全API方法来避免NullPointerException的最佳方法。特别是在用java编写代码时,我分析过的一件事是设置空检查,您是否也可以为我们可以使用的eclipse编辑器提供任何自定义模板的建议 在对对象进行操作之前,请检查是否存在空解引用 如果(某物!=null) //做一件事 如果您希望消除空解引用,请使用yoda表示法 如果(“是”,等于(某物) //做点什么 Eclipse编辑器插件?也许你可以使用样式检查 在对对象进行操作之前,请检查是否

请建议通过应用谨慎或防御性编码技术和空安全API方法来避免NullPointerException的最佳方法。特别是在用java编写代码时,我分析过的一件事是设置空检查,您是否也可以为我们可以使用的eclipse编辑器提供任何自定义模板的建议

  • 在对对象进行操作之前,请检查是否存在空解引用

    如果(某物!=null) //做一件事

  • 如果您希望消除空解引用,请使用yoda表示法

    如果(“是”,等于(某物) //做点什么

  • Eclipse编辑器插件?也许你可以使用样式检查

  • 在对对象进行操作之前,请检查是否存在空解引用

    如果(某物!=null) //做一件事

  • 如果您希望消除空解引用,请使用yoda表示法

    如果(“是”,等于(某物) //做点什么


  • Eclipse编辑器插件?也许你可以使用样式检查。

    好吧,如果你调用一个函数,并且null是一个可能的返回值,那么你必须检查它。另一方面,如果你在任何地方都检查null,这将太过防御性,使代码混乱。如果你可以访问源代码和/或javadoc,你可以检查该函数是否正确将返回null或不返回

    有时,如果您期望一个值,但变量为null,则必须抛出一个异常,因此NPE在这种情况下非常有用,因为其他地方存在错误

    此外,还有一些注释,如@NonNull或@Nullable,一些静态分析检查器(如Findbugs)使用它们来帮助它们捕获可能的空指针问题

    对于正在构建的函数,请检查返回null是否有意义。例如,如果函数返回集合,则返回空集合和返回null之间存在差异


    更多阅读:

    好吧,如果你调用一个函数,并且null是一个可能的返回值,那么你必须检查它。另一方面,如果你在任何地方都检查null,这将太过防御性,使代码混乱。如果你有权访问源代码和/或javadoc,你可以检查函数是否返回null

    有时,如果您期望一个值,但变量为null,则必须抛出一个异常,因此NPE在这种情况下非常有用,因为其他地方存在错误

    此外,还有一些注释,如@NonNull或@Nullable,一些静态分析检查器(如Findbugs)使用它们来帮助它们捕获可能的空指针问题

    对于正在构建的函数,请检查返回null是否有意义。例如,如果函数返回集合,则返回空集合和返回null之间存在差异


    更多阅读:

    一个有用的模式是Option模式。它在Scala中广泛使用,并讨论了Java等效模式

    简单地说,不是返回对对象的引用,而是返回一个Option对象。一个子类(部分)包含引用,而另一个子类(无)不包含引用。因此API明确声明您可能无法返回值。为了返回基础引用,您必须确定您得到了什么

    e、 g.(伪代码)

    您可以在Scala中使其更加简洁,即:

    findNameForId(34).getOrElse(throw new Exception)
    


    一个有用的模式是Option模式,它在Scala中广泛使用,并讨论了Java等效模式

    简单地说,不是返回对对象的引用,而是返回一个Option对象。一个子类(部分)包含引用,而另一个子类(无)不包含引用。因此API明确声明您可能无法返回值。为了返回基础引用,您必须确定您得到了什么

    e、 g.(伪代码)

    您可以在Scala中使其更加简洁,即:

    findNameForId(34).getOrElse(throw new Exception)
    


    避免某事的最好方法是研究它的来来往往。避免某事的最好方法是研究它的来来往往。
    findNameForId(34).getOrElse(throw new Exception)
    
    findNameForId(34).getOrElse(DefaultValue)