java异常类的执行流程与自定义异常类
在我们写代码时,可以通过判断一些参数是否正确来决定是否中断程序(抛出异常)
class WrongInputException extends Exception { // 自定义的类 WrongInputException(String s) { super(s); } } class Input { //如果一个函数要抛出异常但是自己不处理异常(catch),而是交给调用它的函数去处理,那么就要声明抛出的异常类型 //即throws WrongInputException void method() throws WrongInputException { if(isWrong(input))//如果输入值错误那么就抛出异常 throw new WrongInputException("Wrong input"); // 抛出自定义的类 } } class TestInput { //如果一个函数要抛出异常并且自己处理异常(catch),那么不用声明抛出的异常类型 //没有throws WrongInputException public static void main(String[] args){ try { new Input().method(); } catch(WrongInputException wie) { System.out.println(wie.getMessage()); } } }
在程序中一些地方如果因为出现异常而需要中断时,可以使用throw语句抛出异常(每个异常都是一个名叫Throwable的类的一个实例,exception类继承自throwable类),相应的catch语句会接管执行。但是catch语句不一定和throw语句在同一个函数中。
抛出异常有两种方法:
1.抛出异常的函数自己处理异常try...catch...finally结构。
//如果一个函数要抛出异常并且自己处理异常(catch),那么不用声明抛出的异常类型 //没有throws WrongInputException public static void main(String[] args){
try { new Input().method(); } catch(WrongInputException wie) { System.out.println(wie.getMessage()); } }
2.抛出异常的函数不处理异常,而是将异常抛出给调用自己的函数(函数名后跟throws...语句)。
//如果一个函数要抛出异常但是自己不处理异常(catch),而是交给调用它的函数去处理,那么就要声明抛出的异常类型 //即throws WrongInputException void method() throws WrongInputException { if(isWrong(input))//如果输入值错误那么就抛出异常 throw new WrongInputException("Wrong input"); // 抛出自定义的类 }
自定义异常类:
class WrongInputException extends Exception { // 自定义的类 WrongInputException(String s) { super(s); } }
一般继承Exception类,异常类的作用是遇到throw语句时跳转到catch语句,本质上是个跳转语句。