我发现我不会使用return和continue注意细节才能让bug无处藏身

 scoket循环监听某一个端口,时刻准备接受客户端的请求,所有要使用where循环。但里面会遇到接受报文的异常,怎么处理?

项目已经上线2个多月了,突然出现了一个异常,整个监听就结束了?很奇怪。

最后发现问题就在return上。

test1:return如果遇到异常,where循环就直接结束了,监听也就结束了。这个错误之前没发现,因为测试的时候发的测试报文仅仅是数据错误,并没有考虑其他因素(如数据格式错误,不符合接收规则等)。

test2:continue如果遇到异常,仅仅会结束本次循环,并不会影响到where下次循环,所有,监听程序继续执行。

test3:break只能用在循环中,直接结束整个循环。

public class TestDemo {
    
    public static void main(String[] args) {
        test1();
        test2();
        test3();
    }

    public static void test1(){
        while (true){
            System.out.println("test1->---  scoket循环监听执行了"+new Date());
            try{
                Thread.sleep(2000);
                //制造异常
               int a=1/0;
            }catch (Exception e){
                System.out.println(e);
                return;
            }
        }
    }


    public static void test2(){
         while (true){
            System.out.println("test2->---  scoket循环监听执行了"+new Date());
            try{
                Thread.sleep(2000);
                //制造异常
               int a=1/0;
            }catch (Exception e){
                System.out.println(e);
                continue;
            }
        }
    }

     public static void test3(){
         while (true){
            System.out.println("test3->---  scoket循环监听执行了"+new Date());
            try{
                 Thread.sleep(2000);
                //制造异常
               int a=1/0;
            }catch (Exception e){
                System.out.println(e);
                break;
            }
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值