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;
}
}
}
}