在我们的代码中,我们有许多实现相同接口的处理器。
通过在代码中使用spring和一些参数,我们可以找到要调用的IMsgProcessorInbound类的正确具体实现。

当这些具体实现中的任何一个发生异常时,我想在下面的try catch块中捕获该概念。

不幸的是,当在具体实现中引发异常时,永远不会输入该try catch块。

有什么方法可以在下面列出的catch块中捕获异常,而不是用异常处理代码乱扔我所有的具体实现?
还是spring可以为我提供一些错误处理功能?

IMsgProcessorInbound msgProcessor = msgProcessorSelectorInbound.lookupProcessorInbound(args);


    try {
        msgProcessor.processMsg(fixProcessorArgs);
    } catch (Exception e) {
        log.error("Exception is: " + e);
    }


非常感谢您提供有关此问题的所有帮助。

谢谢
达米安

最佳答案

检查一下;

  try {
        msgProcessor.processMsg(fixProcessorArgs);
    } catch (Throwable e) {
        log.error("Exception is: " + e);
    }


msgProcessor.processMsg()可能不会引发异常类型。 Throwable类是所有错误和异常的超类。因此,上面的代码应捕获已检查和未检查的异常。

如果您仍然无法进入catch块-那么msgProcessor.processMsg()可能会吞下异常。

10-06 12:59