JAVA try catch的最佳实践?

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>),好了下面开始说正事:


嗨!我是一名初入职场的JAVA开发。现在入职4个月了,在开发中一直有一个疑惑就是JAVA中try-catch的最佳实践到底是什么?或者说,对于我们团队的,什么样的try-catch方式最合适。

下面我先简单介绍一下我们这边的项目结构。我们没有用spring系列的框架进行开发,而是使用自己定制的mvc框架,有点类似hibernate+springmvc+spring。

我们的项目分为2个工程,一个工程的职责是DAO层的工作,负责和数据库打交道。另一个工程的职责是service层和Web层,其中service层分为普通service和biz-service。

目前我参考同事的代码写的时候大部分逻辑是放在biz-service层处理,按照同事给我的建议,所有调用DAO层的方法,都需要try-catch包住,经常出现一个方法的行数超长,且充斥着大量的try-catch,这让我很头疼。因此我想请问一下,我们这种项目结构,应该怎么样使用try-catch更好?

###

一般来说,spring boot/spring mvc会有缺省的异常处理,会给前端发送500错误,只有你需要实现和缺省异常处理不同的效果的时候,才需要在代码内部写try-catch。

也就是说,如果你需要在catch或者finally里面写特别的处理才需要try-catch,如果在catch里面只是简单的把异常抛出就没必要了。

###

可以使用全局的异常捕获机制捕捉异常,但对于一些错误你需要进行捕获的才进行捕获,没必要所有的DAO层代码都进行try catch,代码太臃肿了,这样只会让后续代码难以维护。

###

首先如果从重复编码的角度,如果对抛出异常的处理逻辑都是一样的话,这个用AOP切面处理很合适。

另外,用一个超长的try catch block,本身就是一个很不负责任的方法,说明编码的人本身就不知道哪些异常需要处理,哪些异常需要抛出。如果大家都是这样,那这个代码只会越来越臃肿,可读性越来越差,维护越来越难。(这个实际上说明编码的人没有仔细思考过,在无脑写代码,你有这个疑问是挺好的一件事情)

推荐阅读阿里规约里面关于异常的内容。

clipboard.png

郑重声明:本站部分内容转载自网络,版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们(QQ/微信153890879)修改或删除,多谢。