自定义异常处理错误

时间:2015-03-08 23:16:49

标签: java exception

我有自定义异常,它扩展了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));

谢谢,

1 个答案:

答案 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());
}
相关问题