这是我在这段代码中的代码,try块内的值是httpconn = null的值,但是在第一行中,我将值存储到第一行中的变量httpconn中,为什么呢。我正在得到nullpointerexception。

公共静态字符串requestToken()
{
字符串url = Const.REQUEST_TOKEN_URL;
字符串标头= oauth_header(url,HttpProtocolConstants.HTTP_METHOD_GET);
字符串requestTokenUrl = concatURL(URL,标头);
HttpConnection httpConn = null;
InputStream输入= null;
尝试
{

httpConn =(HttpConnection)Connector.open(requestTokenUrl); // kris连接
httpConn.setRequestMethod(HttpProtocolConstants.HTTP_METHOD_GET);
httpConn.setRequestProperty(“ WWW-Authenticate”,“ OAuth realm = http://twitter.com/”);
httpConn.setRequestProperty(“ Content-Type”,“ application / x-www-form-urlencoded”);

输入= httpConn.openDataInputStream();
int resp = httpConn.getResponseCode();
如果(resp == HttpConnection.HTTP_OK)
{

StringBuffer buffer =新的StringBuffer();
诠释
while((ch = input.read())!= -1)
{
buffer.append((char)ch);
}
字符串内容= buffer.toString();
Const.token = content.substring(content.indexOf(((Const.OAUTH_TOKEN +“ =”))+(Const.OAUTH_TOKEN +“ =”)。length(),content.indexOf('&')));
Const.tokenSecret = content.substring(content.indexOf(((Const.OAUTH_TOKEN_SECRET +“ =”))+(Const.OAUTH_TOKEN_SECRET +“ =”)。length(),content.length());

消息= httpConn.getResponseMessage();


}
返回消息; //(getTwitterMessage(httpConn.getResponseCode()));
}
捕获(IOException e)
{
返回“例外”;
}
捕获(异常nc)
{
返回“ noConnection”;
}最后{
尝试{
httpConn.close();
input.close();
} catch(IOException e){
e.printStackTrace();
}

最佳答案

finally块中,执行

if (httpConn != null)
    httpConn.close();

if (input != null)
    input.close();


如果例如在您发布的代码中,Connector.open()引发异常,httpConn不会初始化为null以外的任何其他值。您将捕获该异常,并想返回与其相关的信息,但是在返回之前,您尝试访问引发finally的空指针(在NullPointerException块中)。

关于java - 获取变量的空值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5816555/

10-11 22:20