Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自定义异常处理错误_Java_Exception - Fatal编程技术网

Java 自定义异常处理错误

Java 自定义异常处理错误,java,exception,Java,Exception,我有一个扩展JSONException的自定义异常,我希望我的方法抛出这个异常,而不是在我的方法中使用try-catch 当我使用异常时,IDE仍然警告我处理JSON异常 例外情况 public class NoBorderException extends JSONException { public NoBorderException(String s) { super(s); } public String getMessage(){

我有一个扩展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
,而不是超类,这意味着
jsoneexception
保持未处理状态

简而言之,声明
抛出NoBorderException
覆盖了
NoBorderException
的任何子类,但不包括其超类
jsoneexception

如果希望此方法引发自定义异常类型,则需要执行以下操作:

try {
    final JSONArray arrBorders = new JSONArray(data);
    System.out.print(arrBorders.get(0));
}
catch (JSONArray e) {
    throw new NoBorderException(e.getMessage());
}

JSONArray
构造函数(实际上是
get
方法)抛出一个
JSONException
。您的方法只声明为抛出一个
NoBorderException
,而不是超类,这意味着
jsoneexception
保持未处理状态

简而言之,声明
抛出NoBorderException
覆盖了
NoBorderException
的任何子类,但不包括其超类
jsoneexception

如果希望此方法引发自定义异常类型,则需要执行以下操作:

try {
    final JSONArray arrBorders = new JSONArray(data);
    System.out.print(arrBorders.get(0));
}
catch (JSONArray e) {
    throw new NoBorderException(e.getMessage());
}

JSONArray
构造函数(实际上是
get
方法)抛出一个
JSONException
。您的方法只声明为抛出一个
NoBorderException
,而不是超类,这意味着
jsoneexception
保持未处理状态

简而言之,声明
抛出NoBorderException
覆盖了
NoBorderException
的任何子类,但不包括其超类
jsoneexception

如果希望此方法引发自定义异常类型,则需要执行以下操作:

try {
    final JSONArray arrBorders = new JSONArray(data);
    System.out.print(arrBorders.get(0));
}
catch (JSONArray e) {
    throw new NoBorderException(e.getMessage());
}

JSONArray
构造函数(实际上是
get
方法)抛出一个
JSONException
。您的方法只声明为抛出一个
NoBorderException
,而不是超类,这意味着
jsoneexception
保持未处理状态

简而言之,声明
抛出NoBorderException
覆盖了
NoBorderException
的任何子类,但不包括其超类
jsoneexception

如果希望此方法引发自定义异常类型,则需要执行以下操作:

try {
    final JSONArray arrBorders = new JSONArray(data);
    System.out.print(arrBorders.get(0));
}
catch (JSONArray e) {
    throw new NoBorderException(e.getMessage());
}

谢谢你的回复,我知道当我围绕它时,它是工作的,但我还不明白这有什么问题?MyException扩展了JsonException,因此,我假设它应该可以工作??正如我在帖子中提到的:声明
抛出NoBorderException
涵盖了
NoBorderException
的任何子类,但不包括其超类
JsonException
。好的,谢谢,因此,在JSONexception->Exception和NoBorderException->JSONexception之间没有相同的层次结构。有一个层次结构,但您的理解是错误的。您需要声明方法抛出的最一般的异常类(或者,实际上,声明多个
抛出的
)。在这种情况下,
JSONException
NoBorderException
更一般,因为它是超类。谢谢你的回复,我知道当我围绕它时它是有效的,但我还不明白这有什么问题?MyException扩展了JsonException,因此,我假设它应该可以工作??正如我在帖子中提到的:声明
抛出NoBorderException
涵盖了
NoBorderException
的任何子类,但不包括其超类
JsonException
。好的,谢谢,因此,在JSONexception->Exception和NoBorderException->JSONexception之间没有相同的层次结构。有一个层次结构,但您的理解是错误的。您需要声明方法抛出的最一般的异常类(或者,实际上,声明多个
抛出的
)。在这种情况下,
JSONException
NoBorderException
更一般,因为它是超类。谢谢你的回复,我知道当我围绕它时它是有效的,但我还不明白这有什么问题?MyException扩展了JsonException,因此,我假设它应该可以工作??正如我在帖子中提到的:声明
抛出NoBorderException
涵盖了
NoBorderException
的任何子类,但不包括其超类
JsonException
。好的,谢谢,因此,在JSONexception->Exception和NoBorderException->JSONexception之间没有相同的层次结构。有一个层次结构,但您的理解是错误的。您需要声明方法抛出的最一般的异常类(或者,实际上,声明多个
抛出的
)。在这种情况下,
JSONException
NoBorderException
更一般,因为它是超类。谢谢你的回复,我知道当我围绕它时它是有效的,但我还不明白这有什么问题?MyException扩展了JsonException,因此,我假设它应该可以工作??正如我在帖子中提到的:声明
抛出NoBorderException
涵盖了
NoBorderException
的任何子类,但不包括其超类
JsonException
。好的,谢谢,因此,在JSONexception->Exception和NoBorderException->JSONexception之间没有相同的层次结构。有一个层次结构,但您的理解是错误的。您需要声明方法抛出的最一般的异常类(或者,实际上,声明多个
抛出的
)。在这种情况下,
JSONException
NoBorderException
更一般,因为它是超类。