使用throw命令不会引发异常

我正在编写一个方法,返回一个FragmentManager实例,如代码示例所示。 问题是,如果传递给方法的上下文为空,然后终止应用程序,我想抛出异常。

会发生的是,当我将null传递给下面提到的方法时,应用程序关闭,但NullPointerException中的消息是:

getFragmentManagerInstance: Context reference is null

不显示

请让我知道如何抛出异常并正确终止应用程序。

public static FragmentManager getFragmentManagerInstance(Activity activity) throws Exception {

    try {
        if (activity != null) {
            return activity.getFragmentManager();
        } else {
            throw new NullPointerException("getFragmentManagerInstance: Context reference is null");
        }
    } catch (NullPointerException e) {
        System.exit(1);
        return null;
    }
}

消息“getFragmentManagerInstance:Context reference is null”正在存储在e中。 您需要打印它以使其显示在屏幕上。

在catch块中,在System.exit(1)之前添加一条打印语句,

catch (NullPointerException e) {
        System.out.println(e);
        System.exit(1);
        return null;
}

只需删除try块。 只需键入

    if (activity != null) {
        return activity.getFragmentManager();
    } else {
        throw new NullPointerException("getFragmentManagerInstance: Context reference is null");
    }

会做你想做的事情,因为NullPointerException是一个未经检查的异常。


不显示

当然,那是因为你在吞噬异常:

} catch (NullPointerException e) {
    System.exit(1);
    return null;
}

这个消息是在e传递的,并且你没有在catch块中使用它。


请注意,捕获NullPointerException几乎从不是正确的做法。 在这种情况下,您可以直接打印消息并终止应用程序:

if (thing == null) {
  System.err.println("It's null!");
  System.exit(1);
}
链接地址: http://www.djcxy.com/p/13271.html

上一篇: An exception is not thrown using throw command

下一篇: null value for a date throwing a NullPointerException