提问人:Даниел Димитров 提问时间:4/11/2015 最后编辑:Даниел Димитров 更新时间:4/12/2015 访问量:125
使用“if”语句检查后的 NullPointer 异常
NullPointer Exception after checking with 'if' statement
问:
我有机器人连接到 IRC 服务器,并且它不会一直崩溃,机器人在机器人的线程“main”java.lang.NullPointerException 中崩溃并出现异常。Report.main(报告.java:47) 47 线是
if (!(str.split(" ")[1].equals("QUIT") || str.split(" ")[1].equals("PART") || str.split(" ")[1].equals("JOIN")))
编辑更多代码
String str = null;
PrintWriter o;
Socket s;
BufferedReader i1;
s = new Socket("", 6667);
i1 = new BufferedReader(new InputStreamReader(s.getInputStream()));
o = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
o.print("PASS " + "" + "\r\n");
o.print("USER " + "" + " 0 * :" + ""
+ "\r\n" + "NICK " + "" + "\r\n");
o.print("JOIN " + "#test" + "\r\n");
o.flush();
while (s.isConnected()) {
str = i1.readLine();
StringBuffer stringBuffer = null;
if (!(str.split(" ")[1].equals("QUIT") || str.split(" ")[1].equals("PART") || str.split(" ")[1].equals("JOIN"))) {
......
答:
1赞
Даниел Димитров
4/11/2015
#1
似乎解决了我的问题。if(str != null)
1赞
Saurabh Jhunjhunwala
4/11/2015
#2
作为一个好的做法,在请求它的任何属性/方法之前,你应该始终检查 null。
如果你可以重写你的 if 语句
if(str!=null && (!(str.split(“”)[1].equals(“退出”) ||str.split(“”)[1].equals(“部分”) ||str.split(“”)[1].equals(“加入”)))) ......
上一个:Java 和简单的 json
评论
String str = null;
这显然会给出一个nullPointerException,因为你正在尝试拆分一个为null的字符串。null
没有方法(或任何方法或字段),因此在抛出 NPE 时调用它。此外,如果数据未更改,则不要多次调用相同的数据。调用一次,存储结果并在需要时使用它。split
null
split
Javadoc 的 BufferedReader.readLine()