我有扩展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());
}

10-08 14:02
查看更多