我正在编写一个返回FragmentManager实例的方法,如代码belwo所示。 prblem是,如果传递给方法的上下文为null,我想抛出异常,然后终止App。
当我将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;
}
}
答案 0 :(得分:1)
只需删除try块。只需输入
即可 if (activity != null) {
return activity.getFragmentManager();
} else {
throw new NullPointerException("getFragmentManagerInstance: Context reference is null");
}
将执行您想要的操作,因为NullPointerException
是未经检查的例外。
答案 1 :(得分:0)
未显示
当然,那是因为你吞下这个例外:
} catch (NullPointerException e) {
System.exit(1);
return null;
}
邮件在e
中传送,您未在catch
块中使用该邮件。
请注意,抓住NullPointerException
几乎永远是正确的做法。在这种情况下,您只需打印消息并直接终止应用程序:
if (thing == null) {
System.err.println("It's null!");
System.exit(1);
}
答案 2 :(得分:0)
只需使用e.printStackTrace()
之前System.exit(1)
它将按照您的意愿打印
答案 3 :(得分:0)
由于您还没有编写任何代码进行打印,因此未显示该消息。如果要显示消息,请在退出前添加e.printStackTrace();
。
答案 4 :(得分:0)
消息" getFragmentManagerInstance:上下文引用为空"正在存储在e。 您需要打印才能在屏幕上显示。
在catch块中,在System.exit(1)
之前添加一个print语句catch (NullPointerException e) {
System.out.println(e);
System.exit(1);
return null;
}
答案 5 :(得分:0)
要打印某些信息,您需要将它们提供给输出流,例如System.out
或System.err
。
默认情况下,如果您调用ex.printstacktrace()
,它将在System.err中打印异常。
您还可以使用ex.printstacktrace(System.out)
选择发送信息的位置,例如文件,控制台或任何输出。
此外,您的应用程序将在System.exit之后立即停止,因此您的代码行必须在退出之前。
答案 6 :(得分:0)
我很惊讶尚未说明,请将catch
块更改为
} catch(NullPointerException e){
System.err.print(e.getMessage());
System.exit(1);
return null;
}
如果您要向用户打印消息,请考虑使用Toast
而不是异常消息。