专栏首页小尘哥的专栏返璞归真·读书·【Effictive java】之异常

返璞归真·读书·【Effictive java】之异常

功夫之道,无招胜有招。开发之道,基础要牢。然而做开发的时间越久,越是发现一些基础知识的巧妙与必然,很多三年五年的coder有时候都不见得能搞明白一些基础的东西,因为平时开发压根不会用到,只需要会使用框架,可以CRUD就好了。但是拼到最后,问题一定可以在基础知识上找到答案,不能不得不赞叹语言设计者的智慧。

本文主要抛砖引玉,throw 一些 exception,希望大家可以catch后做出自己的业务处理

一、只针对该使用异常的情况下才使用异常

示例(参考Effictive Java 第九章)

try{   int i = 0;    while(true){    range[i++].climb();   }} catch(ArrayIndexOutOfBoundsException e){}

正确做法

for (Mountain m:range){  m.climb();}

只在有需要的地方抛出异常,不要通过异常来决定正确的业务逻辑。

二、不要忽略异常

通常我们为了方便,会将整个方法体放入try catch。真的是撸代码时候爽的飞起,万一真的进入catch会有想死的感觉啊。

  1. 整个方法方法捕获异常会非常降低效率,可以写一个循环尝试一下
  2. 整个方法体万一抛出一个NullPointException,再加上一般这么写的代码都会太“优美”,无法排查跟踪错误
  3. 更有甚者,请看下面代码
try {  // your code begin   ··· // your code end}catch (Exception e){// Do nothing}

catch中什么也没做,没有任何处理,并且所有的Exception都被捕获了,然后····没有然后了。异常捕获之后一定要做自己的业务处理或者声明自定义异常。

代码质量,取决于后来维护人每分钟骂娘次数,共勉!

本文分享自微信公众号 - 陌与尘埃(grq100296),作者:小尘哥

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【springboot+easypoi】一行代码搞定简单的word导出

    小尘哥
  • ES初体验

    2、 将elasticsearch-workspace文件夹和software文件夹拷贝到linux系统根目录,如果已经存在则删除。

    小尘哥
  • Django+JWT实现Token认证

    基于Token的鉴权机制越来越多的用在了项目中,尤其是对于纯后端只对外提供API没有web页面的项目,例如我们通常所讲的前后端分离架构中的纯后端服务,只提供AP...

    小尘哥
  • [ Java学习基础 ] Java异常处理

    Kevin_Zhang
  • 【趣学程序】Java中的异常

    趣学程序-shaofeer
  • 异常处理升级版

    其实前面就写了一篇异常处理的文章,但是那个文章实在是感觉太详细了,不太好复习。所以今天我就再写一篇这样就更好复习了。 一、异常概述   在我们日常生活中,有时会...

    用户1195962
  • 深入理解 Java 异常

    Throwable 是 Java 语言中所有错误(Error)和异常(Exception)的超类。

    静默虚空
  • JDBC 编程

    在Java语言中,有一个专门连接数据库的规范(JDBC),专门负责连接数据库进行数据操作。各个数据库提供商会根据这套规范(接口)编写相关的实现类,封装成一个 j...

    Carlos Ouyang
  • Java异常最常见的八大问题

    原因是你不知道在try块中哪里会抛出异常。在声明对象之前抛出异常是很有可能的。对于这个特定的例子,这是真的。

    java乐园
  • 白话说JPA | 从开发角度看应用架构8

    http://www.blogjava.net/jesson2005/articles/380880.html

    魏新宇

扫码关注云+社区

领取腾讯云代金券