问题: 在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>20170516</version>
</dependency>
<!-- 替换后依赖 -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20210307</version>
<!-- <version>20170516</version>-->
</dependency>
pom.xml替换依赖后,可以成功构建。
解决方案:
- 使用maven构建及运行项目, 项目启动速度会变慢。不推荐
- org.json.JSONObject更新到最新依赖。 极力推荐