【问题标题】:Does getApplicationContext throw exception?getApplicationContext 会抛出异常吗?
【发布时间】:2018-03-25 01:26:42
【问题描述】:

我尝试阅读 Android 文档,但似乎没有任何关于如何处理 getApplicationContext() 返回 null 的情况的信息。

我应该检查一下吗

try{
    mContext = application.getApplicationContext()
} catch (NullPointerException e) 

}

或者我应该做一个空检查

if(application.getApplicationContext() == null)
{
 return;
}

getApplicationContext 是否抛出任何异常或致命异常?还是只返回 null?

【问题讨论】:

  • 只返回null
  • 等等,@EJP,为什么要删除你的答案?这很适合讨论。我测试了他的代码activity.getApplicationContext 确实抛出了 NPE
  • 只有在活动为空时才会抛出 NPE。 getApplicationContext 本身永远不会在正确初始化的上下文中返回 null。
  • @nicko_yuan 我既没有删除也没有提供答案。删除的答案在所有方面都是 100% 不正确的。代码行可以抛出 NPE 的唯一方法是 activity 本身为空,这不是在他的人为示例中,因此没有抛出他显示的异常。我不知道你是怎么做到的,但不是他的代码。
  • 是否它返回null?我在 Javadoc 中看不到任何证据表明它要么 返回 null 引发任何类型的异常。

标签: java android exception-handling nullpointerexception


【解决方案1】:

我尝试阅读 Android 文档,但似乎没有任何关于如何处理 getApplicationContext() 返回 null 的情况的信息。

文档中没有任何内容表明它会返回 null。

我应该检查一下

try{
    mContext = application.getApplicationContext()
} catch (NullPointerException e) 

}

不,为什么?根据 Javadoc,唯一可以捕获任何东西的方法是 application 为空。

或者我应该做一个空检查

if(application.getApplicationContext() == null)
{
 return;
}

我不明白为什么。没有任何迹象表明它会返回 null。

getApplicationContext 是否抛出任何异常或致命异常?还是只返回 null?

根据 Javadoc,两者都不是。当然,如果 Javadoc 是错误的,这是任何人的猜测,但我看不出应用程序上下文如何在正在运行的活动中为空。

【讨论】:

  • 所以我应该实施的唯一更改是if(application == null) {} ?
猜你喜欢
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 2011-07-12
  • 2010-09-26
  • 2023-03-23
  • 2013-04-06
  • 2020-02-24
  • 1970-01-01
相关资源
最近更新 更多