在没有退出Matlab的情况下终止Java程序?

时间:2014-01-06 09:34:49

标签: java matlab error-handling

所以最近我一直在研究一个将从Matlab执行的Java applet(因为matlab是一种处理和解析大型数组的简单方法)。我在这方面有问题。在我的Java程序中,我通常通过以下方式处理异常和其他错误:

System.err.println("WARNING: [SOME ERROR MESSEAGE GOES HERE]"); 
System.exit(-1);

我所寻求的是在Matlab中接收错误消息并关闭Java小程序。

问题是System.exit(-1)语句终止两者 Matlab和Java,因此将我带回我的桌面。

您是否有任何关于如何仅关闭我的Java小程序的建议,并保持Matlab打开,以便用户收到错误消息。

1 个答案:

答案 0 :(得分:0)

说明 感谢@watery和MATLAB External Interfaces handbook,看起来Java代码成为MATLAB实例的一部分。因此,System.exit(-1)不仅会终止JAVA程序,还会终止MATLAB本身。

<强>解决方案: 如果您打算从matlab运行java类,请不要使用System.exit(-1)。相反,您可以做的是在JAVA中抛出未经检查的异常(您可以使用预定义的异常或创建自己的异常,如下所示)。

示例:

if (problem)
    throw new InsufficientInputException("[ERROR MESSAGE GOES HERE]");

您需要自己创建未经检查的异常,并将throws InsufficientInputException添加到if(problem)嵌套在其中的方法中。

public class InsufficientInputException extends Exception{
    public InsufficientInputException(String message) {
        super(message);
    }
}

这将终止JAVA程序,让用户(在MATLAB中)留下错误消息,但不终止MATLAB。