一个模拟Token Ring的程序,当只有一个节点时就是自己给自己发token,程序在有1个以上节点互相传递token时没有问题,但是在自己给自己发时候抛出莫名其妙的无名Excetion,怎么回事...if (sb.isFirstMember) {
String tokenStr = "TOKEN";
        sb.isFirstMember = false;

try {
                // 这里给自己发数据包 sb.successorIPaddress和sb.successorPort 分别等于自己的IP和端口号
sendSocket.send(new DatagramPacket(tokenStr.getBytes(),tokenStr.length(),InetAddress.getByName(sb.successorIPaddress),sb.successorPort));
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();// 这里没有抛出异常
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();// 这里没有抛出异常
} catch (Exception e) {
e.printStackTrace();

// DEBUG 这里抛出异常,但是getMessage或getCause都是null...(这里这么debug的原因是该程序在远端运行,不能print)
while (logFileWriteFail) {
try {
output = new BufferedWriter(new FileWriter("log.txt",true));
output.write("Exception: " + e.getMessage());
output.flush();
output.close();

logFileWriteFail = false;
} catch (IOException e11) {
// TODO Auto-generated catch block
e11.printStackTrace();
logFileWriteFail = true;
try {
Thread.sleep((long) (Math.random() * 100));
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
logFileWriteFail = true;
}
}

// listen to UDP unicast channel for incoming messages
DatagramPacket packet = new DatagramPacket(buf,1024);
try {
        // 这里是等待接受该端口上的数据包
receiveSocket.receive(packet);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}