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语句,本质上是个跳转语句。

猜你喜欢

转载自www.cnblogs.com/silver-aircraft/p/11448379.html