1.Throw E Return
- 在一个try catch中
- 使用throw e 或者return 爆红都会取消
- throw e 和 e.printStackTrace();的区别
throw e 作用于方法内,是抛出异常,会中断程序,后面的代码都不执行了
throws 作用于方法上,用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,throws 对应的异常真的有发生不会终止程序,谁调用我我就抛给谁
e.printStackTrace() 是输出错误日志,并不中断程序
总结:
return的作用很简单,意思是方法直接返回了,该方法不在向下执行。但是调用该方法的方法继续执行。
而throw指抛出异常,并且该方法以及调用该方法的一切方法将不会向下执行。但是,这个异常却会一直向上抛出,如直到有上层方法使用了try catch进行捕获这个异常,则catch方法块中的命令都会被执行
2.关于控制台打印
这里使用一个BigDecimal 除数不能为0的一个异常
- 正常抛出异常
- 去除 e.printStackTrace();
- 使用lombok的注解@Slf4j输出异常
log.info("计算成功");
log.error("计算失败",e); //带e也只是打印,不同throw e 会中断程序