java - java中如何避免空指针异常

标签 java exception nullpointerexception

<分区>

我很想知道避免 NullPointerException 的正确方法。

try
{
    String name = null;
    System.out.println("name=" + name.toString());
}
catch(Exception e)
{
    System.out.println("Exception Occured" + e.getMessage());
}

这里我只是捕获并显示异常消息。我想知道处理这种情况或避免这种情况的正确方法。

最佳答案

除了捕获错误之外,如果您要处理可能为 null 的内容,您可能需要进行 null 检查。

要减少必须进行 null 检查的可能性,您可以做的是永远不要从您的方法中返回 null,除非确实有必要,例如:

public IList<String> getUserNames()
{
     //No usernames found...
     return new ArrayList<String>();

     //As opposed to returning null
     return null;
}

通过返回空列表,对上述代码的调用将导致如下结果:for(String name : this.getUserNames()) {...}。如果找不到用户名,则不会执行循环。

另一方面,如果您返回 null,则需要执行如下操作:

List<String> userNames = this.getUsernames();
if(userNames != null)
     for(String userName : userNames) {....}

关于java - java中如何避免空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29385992/

相关文章:

java - JSP/Glassfish 的 PHP .htaccess 模拟

java - Android - 索引 1 无效,大小为 1 - 超出范围

java - 面临改造 api 的问题。错误 : java. lang.NullPointerException:尝试在空对象引用上调用接口(interface)方法

java - Play 应用程序上不可能的 NullPointerException

android - Fragment 的 oncreateView() 中的 NullPointerException

java - 如何在netbeans java中将图像插入mysql数据库

java - 如何使用 Joda-Time 将不同时区的字符串转换为 UTC

java - 为什么 Exception.getMessage() 在 postgres jdbc 8.3 和 jdbc 8.4 版本之间不同?

c - 为什么释放动态创建的 2D long long int 数组会在 c 中给出 SIGTRAP?

vb.net - Win32Exception “The System Cannot Find the File Specified”