专栏首页10km的专栏java:Exception的另类用途-利用异常代替if判断的例子

java:Exception的另类用途-利用异常代替if判断的例子

版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/53392610

有的时候,我们可以利用java的异常来代替一if判断, 以下面这代码片段为例,modifyFocus方法中为了防止List下标访问越界,用了if判断语句来判断下标是否有效。

public class AnnotationCanvas{
    private List<AnnRectUI> rects;
    /**
     * 从rects中找到焦点对象(focus为true),没有找到则返回-1
     */ 
    private int getFocus(){
        for(int i=0;i<rects.size();++i)if(rects.get(i).focus)return i;
        return -1;
    }
    /**
     * 修改焦点矩形
     * @param rect
     */
    public void modifyFocus(Rectangle rect){
        int focusIndex = getFocus();
        // 没找到焦点对象则返回
        if(focusIndex <0)return;
        rects.get(focusIndex).setBounds(new AnnRectUI(rect.x,rect.y,rect.width,rect.height).unZoom(zoom));
        drawAction=refreshAll;
    }
}

我写代码有个习惯,就是if条件判断分支越少越好,能不用if判断的就尽量避免之,所以我利用java.lang.IndexOutOfBoundsException异常代替这个判断语句: 重写的modifyFocus方法如下,还省去临时变量focusIndex的定义:

    /**
     * 修改焦点矩形
     * @param rect
     */
    public void modifyFocus(Rectangle rect){
        try{
            rects.get(getFocus()).setBounds(new AnnRectUI(rect.x,rect.y,rect.width,rect.height).unZoom(zoom));
            drawAction=refreshAll;
        } catch (IndexOutOfBoundsException e) {}
    }

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • facebook/swift:构建thrift http server(4)--ThriftXHRDecoder,ThriftXHREncoder

    版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net...

    用户1148648
  • java:执行linux sudo命令

    版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net...

    用户1148648
  • cmake:macro,function中ARGV,ARGN参数的区别

    版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net...

    用户1148648
  • ZkClient使用

    使用原生的Zookeeper API来与Zookeeper服务端进行交互还是比较繁琐复杂的,为了简化这些操作,就诞生了一些封装客户端。这些客户端除了简单易用,还...

    shysh95
  • 腾讯TMQ在线沙龙回顾|单元测试(Android)

    单元测试(Android) 活动时间:2017年6月14日 斗鱼直播:http://www.douyu.com/TMQ 活动介绍:TMQ在线沙龙第二十二期分享 ...

    腾讯移动品质中心TMQ
  • 世界旅游及旅行理事会呼吁各国采用生物识别技术

    世界旅游及旅行理事会(World Travel and Tourism Council)呼吁各国旅游及旅行部门采用生物识别技术。

    人工智能快报
  • 动物管理员 --- zookeeper

    简单地说就是管理员。有什么事它就会通知到所有被它管理的人。就比如宿舍管理员,宿舍要停电他就会发通知,然后所有住这栋楼的都会知道。说专业一点,它是由文件系统和通知...

    贪挽懒月
  • linux下自动备份网站数据到邮箱

    码农二狗
  • Sceince子刊:利用AI+脑电波,锁定你想听的声音

    人类大脑具有非凡的能力,可以在嘈杂的环境中挑选出特定的声音。比如,在嘈杂的酒吧里留意中意对象的说话、在车水马龙的街道分辨身后来车等等。

    新智元
  • Angular和Vue.js 深度对比

    Vue.js 是开源的 JavaScript 框架,能够帮助开发者构建出美观的 Web 界面。当和其它网络工具配合使用时,Vue.js 的优秀功能会得到大大加强...

    葡萄城控件

扫码关注云+社区

领取腾讯云代金券