我有自定义异常,它扩展了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));
谢谢,
答案 0 :(得分:3)
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());
}