我有扩展JSONException的自定义异常,我希望我的方法抛出此异常,而不是在我的方法中使用try catch。
当我使用异常时,IDE仍然警告我要处理JSON异常。
例外
public class NoBorderException extends JSONException {
public NoBorderException(String s) {
super(s);
}
public String getMessage(){
return super.getMessage();
}
}
方法-未处理的JSON异常
private void loadNeighboringCountries(String data) throws NoBorderException {
final JSONArray arrBorders = new JSONArray(data);
System.out.print(arrBorders.get(0));
方法-没问题
private void loadNeighboringCountries(String data) throws JSONException{
final JSONArray arrBorders = new JSONArray(data);
System.out.print(arrBorders.get(0));
谢谢,
最佳答案
JSONArray
构造函数(实际上是get
方法)抛出JSONException
。您的方法仅声明为抛出NoBorderException
而不是父类,这意味着JSONException
仍未处理。
简而言之,声明throws NoBorderException
覆盖NoBorderException
的任何子类,但不覆盖其超类JSONException
。
如果您希望此方法引发自定义异常类型,则需要执行以下操作:
try {
final JSONArray arrBorders = new JSONArray(data);
System.out.print(arrBorders.get(0));
}
catch (JSONArray e) {
throw new NoBorderException(e.getMessage());
}