问题: 在springboot项目使用IDE启动的时候,报的java: 未报告的异常错误org.json.JSONException;
必须对其进行捕获或声明以便抛出
思考: 出现此问题的代码如下
import org.json.JSONObject;return new JSONObject(response);
查看源码:
public JSONObject(String source) throws JSONException {this(new JSONTokener(source));}
根据上面的源码我们发现JSONObject构造方法抛出了异常,先不着急咱们接着往下看。。。
package org.json;public class JSONException extends RuntimeException {private static final long serialVersionUID = 0L;public JSONException(String message) {super(message);}public JSONException(String message, Throwable cause) {super(message, cause);}public JSONException(Throwable cause) {super(cause.getMessage(), cause);}}
由上面源码我们发现JSONException 继承了RuntimeException ,因此我们不需要在new JSONObject(response)时抛出异常或者捕获异常。那会是什么原因呢???
解决过程:
1. 验证是否为jdk版本的问题, 验证结果: 失败
2. 不使用IDE启动,在IDE->maven中设置使用maven构建及运行,验证结果: 成功
org.json.JSONObject使用最新maven依赖 验证结果: 成功
<!-- 替换前依赖 --><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>0516</version></dependency>
<!-- 替换后依赖 --><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>0307</version><!-- <version>0516</version>--></dependency>
pom.xml替换依赖后,可以成功构建。