到底怎样写 try-catch,才能称之为高手,2021金九银十

 }



public void doB(){

    System.out.println("I am doing B");

}



public void doC(){

    int i = 1/0;

    System.out.println("I am doing C");

}



public void doD(){

    System.out.println("I am doing D");

}



public void doE(){

    System.out.println("I am doing E");

}

}




上面的程序有个问题,在doC函数中存在除0异常,程序运行后会崩溃,我们可以得到如下日志反馈:



I am doing A

I am doing B

Exception in thread “main” java.lang.ArithmeticException: / by zero

at BusinessLogic.doC(Example.java:27)

at Example.main(Example.java:7)

sandbox> exited with status 0




但是有的程序员,特别害怕崩溃,为了让自己的程序不会崩溃,直接在最外层进行try-catch:



public class Example {

public static void main(String[] args) {

    try {

        BusinessLogic bl = new BusinessLogic();

        bl.doA();

        bl.doB();

        bl.doC();

        bl.doD();

        bl.doE();

    } catch(Exception e) {

        e.printStackTrace();

    }

}

}




结果,程序是不会崩溃了,但是逻辑并没有正确地执行,这个时候如果让你去排查这个问题,你能第一时间定位到doC函数有问题吗?我觉得大部分人都不能。



虽然这个例子看起来有点可笑,但是在实际开发中确实看到过不少这种现象,更有甚者,连e.printStackTrace()这句话都懒得加,程序没有任何异常日志,想排查这种错误简直痛不欲生。



[]( )空指针强迫症

=================================================================



前面说到崩溃,大家知道排名前2的崩溃是什么吗?没错,那就是:  

NullPointerException  

IndexOutOfBoundsException



大家可以检查下自己的项目,看看这两个异常是不是占大头。所以,为了防止空指针异常,很多程序员会这样写代码:



public class Example {

public static void main(String[] args) {

    BusinessLogic bl = new BusinessLogic();

    Object param = new Object();

    bl.doA(param);

}

}

class BusinessLogic {

public void doA(Object o){

    if (o != null) {

        System.out.println("I am doing A with param : " + o);

        doB(o);

    }

}



public void doB(Object o){

    if (o != null) {

        System.out.println("I am doing B with param : " + o);

        doC(o);

    }

}



public void doC(Object o){

    System.out.println("I am doing C with param : " + o);

}

}

最后

我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了5、6年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。

其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。

不断奔跑,你就知道学习的意义所在!

CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》

奔跑,你就知道学习的意义所在!

[外链图片转存中…(img-vOfV0fuh-1631092288426)]

CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》

[外链图片转存中…(img-eVxqBMZq-1631092288428)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值