【发布时间】:2015-02-20 17:04:38
【问题描述】:
我对 Java 很陌生,偶然发现一个问题,我无法理解(我正在使用 Eclipse Luna 进行开发和执行):
我调用了一个可能引发错误的方法并用 try-catch-block 包围它:
try {
transaction.execute();
} catch (ModbusIOException e) {
log.debug("Fehler bei Modbustransaction: ModbusIOException - " + e.getMessage());
e.printStackTrace();
} ... // more catches
执行方法实际上会抛出 ModbusIOException - 但它没有被捕获块捕获。在控制台中,我得到以下输出:
net.wimpi.modbus.ModbusIOException:读取失败 在 net.wimpi.modbus.io.ModbusTCPTransport.readResponse(ModbusTCPTransport.java:180) 在 net.wimpi.modbus.io.ModbusTCPTransaction.execute(ModbusTCPTransaction.java:193) 在 de.vksys.modbusclient.ModbusClient.getPlantState(ModbusClient.java:121) 在 de.vksys.modbusclient.ReconnectingModbusClient.main(ReconnectingModbusClient.java:36)
如果我单击带有 getPlantState 的行,Eclipse 会在上面的 try-block 中标记该行。但是为什么没有抓到呢?我还检查了 catch 块中 ModbusIOException 的全名,是一样的... net.wimpi.modbus.ModbusIOException。
任何想法,可能是什么原因?如果您需要更多代码来跟踪此问题,请告诉我。
提前致谢,
弗兰克
【问题讨论】:
-
这个异常可能会在别处抛出,或者尝试保存您的文件?
-
删除 e.printStackTrace();从您的 catch 块中查看结果