java强制类型string转换int,java中字符串比较
而不是创建自己的功能来使用try-catch的内置结构。 您的问题是调用jsonarray或JSONarray.getjsonobject(I )或值本身为null且为null引用的方法。 尝试以下操作:
int block_id=0; //this set ' sthe block _ idto0asa default。
try {
lock _ id=integer.parseint (JSON array.getjsonobject (I ).getstring('block_id ' ) )//thiswillsetblock _ idinobjeck
}catch(exceptione ) };
Java异常用于标记意外情况。 例如,将非数字字符串解析为数值(NumberFormatException )或调用NullPointerException上的方法。 可以用很多方法捕捉。
try{
//some代码
}苹果铅笔)。
e.print stack trace (//very important-handlestheexceptionbutprintstheinformation!
}catch(nullpointerexceptione2) )
e .打印堆栈跟踪(;
}
或者用这个事实,他们都扩展异常:
try {
//some代码
}catch(exceptione ) {
e .打印堆栈跟踪;
(;
或从Java 7开始:
try {
//some代码
} catch (nullpointerexception )
e .打印堆栈跟踪;
(;
注意
请仔细阅读答案。 请记住,堆栈溢出要求最小、完成和验证扩展。 这包括你异常的堆栈跟踪。 对于你,那个可能从以下开始:
exceptioninthread ' main ' Java.lang.nullpointerexception
调试变得简单。 不,只是推测。
编辑:根据接受的答案
我的回答很好。 使用key:block_id保存的值是数字,因此需要长时间工作。 如果不是数字,APP应用程序就会崩溃。
相反:
jsonobjectjobj=JSON array.getjsonobject (I;
intblock_id=jobj.has('block_id '? jobj.getint(block_id ) ) : 0;
应该使用:
int block_id;
try{
jsonobjectjobj=JSON array.getjsonobject (I;
block_id=jobj.Has('block_id '? jobj.getint(block_id ) ) : 0;
} catch (JSON exception ) )
e .打印堆栈跟踪(;
}