代码之家  ›  专栏  ›  技术社区  ›  Karthikeyan

从bean类[复制]中处理线程“主”java.郎.null POutExtExchange中的异常的最佳实践

  •  -5
  • Karthikeyan  · 技术社区  · 7 年前

    这个问题已经有了答案:

    我使用bean类来获取/设置属性的值。在某些情况下我开始 Exception in thread "main" java.lang.NullPointerException 由于值为空而导致的错误。当我们从/到bean类获取/设置值时,处理空指针异常的最佳实践是什么?

    那个三元运算符是好用的还是其他建议?

    请在下面的代码行中找到获取空指针异常的位置。

    doc.setCatalog_title(sourceAsMap.get("catalog_title").toString());
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   Aman Chhabra    7 年前

    nullpointer异常的基本原因是,您正在从null变量调用一个方法或变量,其中with null variable我指的是一个当前不包含任何对象引用的变量。因此,避免这种情况的简单方法是给变量分配一个引用,在该引用上可以调用后续任务

    现在这可以用N种方法来处理,其中一些基本方法是:

    1)使用if条件

    if(doc!=null && sourceAsMap!=null && sourceAsMap.get("catalog_title")!=null)
    doc.setCatalog_title(sourceAsMap.get("catalog_title").toString());
    

    2)使用三元运算符:

    doc = null == doc ? new Document():doc;
    doc.setCatalog_title(sourceAsMap!=null && sourceAsMap.get("catalog_title")!=null ? sourceAsMap.get("catalog_title").toString() : null);
    

    希望能帮上忙

        2
  •  0
  •   Hemant Singh    7 年前

    你可以用番石榴做先决条件( https://github.com/google/guava/wiki/PreconditionsExplained ),因为在执行之前检查类的前提条件是很好的做法。你可以用 checkNotNull(T) .

    如果系统中需要空值,则使用 可选的 https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html ,

    如果您使用的是Java7,那么您可以使用 可选的 番石榴 https://github.com/google/guava/wiki/UsingAndAvoidingNullExplained