Exception中的throws和throw:throws 是用户本身并不知道会抛出什么异常,而是由调用方来处理它,所以它是放在方法后面的;throw 是用户主动知道程序可能会抛出的异常,然后去捕捉这种异常,放在方法体内。
Exception在项目中的应用一般不仅仅在于抛出某个异常或者捕捉某个异常,而是怎么在项目出错的时候快速定位在某个位置。一般来说,我们会使用try catch来捕捉异常,但是在catch中往往只是简单的打印堆栈。实际上如果安装阿里代码规约的话,往往会提示你在catch中使用日志,用来更好的定位。一般来说为了业务需要并不会简单的抛出Exception异常,往往会继承这个类,使用自己定制的Exception类,这样做的原因是为了在log中使用更详细的日志。同时,捕捉了异常,程序依然能运行下去,这样项目运行却不知道哪里出错了,这样更不行。因为你明明是错了,却因为主动try catch捕捉了,却没出现错误,这样是不对的。因此一般在项目中如果使用try catch同时又想知道程序是在哪里出错的话,都是下面这样;当然,如果你想程序完整地运行下去,那么就不需要在catch中throw出异常,但是你的log应该比较丰富,用以在分析的时候能够快速定位。
try {
} catch() {
log;
throw(你定义的Exception类)
}