所以最近我一直在研究一个将从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。