终止 Java 程序而不退出 Matlab



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

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

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

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

你们中的任何人对如何仅关闭我的 Java 小程序并因此保持 Matlab 打开状态以便用户收到错误消息有任何建议吗?

描述:多亏了@watery和 MATLAB 外部接口手册,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。

最新更新