自定义异常作为检查异常
Custom Exception as checked Exception
在Java中,如果我们通过扩展Exception class创建自定义异常,那么它将被视为检查异常。根据定义,检查异常是由编译器强制执行的,就像我们在下面编写代码一样,我们一定会捕获 FileNotFoundException
try{
fis = new FileInputStream("abc.txt");
}
catch(FileNotFoundException e)
{
System.out.println("The source file does not exist. " + e);
}
为了调用自定义异常,我需要明确抛出它。那么如何检查呢?它应该被取消选中,因为编译器没有强迫我做任何事情。
问候
谢赫
checked/unchecked是指使用你的方法抛出异常的代码需要处理异常。
假设您在方法中抛出未经检查的异常(RuntimeException 或其子类)。您不必发出您的方法抛出它的信号,任何使用您的代码的人都不需要显式处理它。
但是,如果您抛出已检查的异常(不是 RuntimeException 的子类的异常),那么您的方法必须明确说明它会抛出异常,并且任何使用您的代码的人都必须处理该异常 - 也可以通过将其方法声明为方法抛出异常(重新抛出)或使用 try-catch 块,围绕调用抛出已检查异常的方法。
在Java中,如果我们通过扩展Exception class创建自定义异常,那么它将被视为检查异常。根据定义,检查异常是由编译器强制执行的,就像我们在下面编写代码一样,我们一定会捕获 FileNotFoundException
try{
fis = new FileInputStream("abc.txt");
}
catch(FileNotFoundException e)
{
System.out.println("The source file does not exist. " + e);
}
为了调用自定义异常,我需要明确抛出它。那么如何检查呢?它应该被取消选中,因为编译器没有强迫我做任何事情。
问候 谢赫
checked/unchecked是指使用你的方法抛出异常的代码需要处理异常。
假设您在方法中抛出未经检查的异常(RuntimeException 或其子类)。您不必发出您的方法抛出它的信号,任何使用您的代码的人都不需要显式处理它。
但是,如果您抛出已检查的异常(不是 RuntimeException 的子类的异常),那么您的方法必须明确说明它会抛出异常,并且任何使用您的代码的人都必须处理该异常 - 也可以通过将其方法声明为方法抛出异常(重新抛出)或使用 try-catch 块,围绕调用抛出已检查异常的方法。