这个问题之前也困惑了我,现在想通了,抛出RuntimeException是希望程序停止运行,把错误的代码改过来,因为如果抛出的不是RuntimeException,那么抛出的异常首先会被处理,这样编译也通过了,运行时由于异常已被处理不会阻止程序的继续运行。举个例子,我们希望在被除数为正数的已知情况去限定除数是正数,这样就可以的一个正数的商,我们就会限定if(除数<=0) throws FuException, 而如果这个异常不是RuntimeException,那么会被我们处理掉,而这个处理通常也只是打印出出现了什么异常,他无法去改变调用者传入的除数,这样异常处理了,程序接着运行,可是这时参与继续运行的商就是个负数了,而我们希望看到的是一个正数的商参与接下来的运行,那么这些用负数的值进行的运行也没有意义了,而错误因为被处理后程序继续运行也没掩饰了。 |