JAVA try catch的最佳实践?

新手上路,请多包涵

嗨!我是一名初入职场的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更好?

阅读 4.2k
3 个回答

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

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

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

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

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

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

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题