今天来稍微的了解一下异常,没错又是educoder里面的内容,但是是觉得很好所以就这样了
链接:https://www.educoder.net/tasks/xiocqmvkegbn
自定义异常
在Java
中,除了由Java
系统监测到的异常(下标越界,被0除等),用户也可以自定义异常。
用户定义的异常同样要用try{} catch{}
捕获,但必须由用户自己抛出 throw new MyException
。
异常是一个类,用户定义的异常必须继承自Throwable
或Exception
类,建议用Exception
类。
语法结构如下所示:
class MyException extends Exception {
…
}
一般的,我们会这么定义一个异常:
class MyException extends Exception {
public MyException(String m) {
super(m);
}
}
上述代码中的构造方法MyException(String m)
中通过super()
调用了父类的构造方法,效果是输出以下结果:
MyException: 字符串m中的内容
在程序中,其抛出异常的语法为:
throw new MyException(""); //""为字符串m中的内容,由用户自定义
然后再上一段代码加深理解
import java.util.Scanner; class MyException extends Exception { public MyException(String m) { super(m); } } public class MyExceptionTest { public static void main(String[] args) { try { Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); /********** Begin *********/ if(num >= 0){ System.out.print("The number you entered is: " + num); } else{ throw new MyException("Number cannot be negative!"); } /********** End *********/ } catch(MyException e) { System.out.print(e); } } }
样例输入:-60
样例输出:chapter8.step3.MyException: Number cannot be negative!
样例输入:60
样例输出:The number you entered is: 60