在不退出Matlab的情况下终止Java程序?
所以最近我一直在开发一个Java小程序,它将从Matlab中执行(因为Matlab是处理和解析大型数组的一种简单方法)。在这方面我有一个问题。在Java程序中,我通常通过以下方式处理异常和其他错误:在不退出Matlab的情况下终止Java程序?,java,matlab,error-handling,Java,Matlab,Error Handling,所以最近我一直在开发一个Java小程序,它将从Matlab中执行(因为Matlab是处理和解析大型数组的一种简单方法)。在这方面我有一个问题。在Java程序中,我通常通过以下方式处理异常和其他错误: System.err.println("WARNING: [SOME ERROR MESSEAGE GOES HERE]"); System.exit(-1); 我寻求的是在Matlab中接收错误消息并关闭Java小程序 问题是System.exit(-1)语句同时终止Matlab和Java,因
System.err.println("WARNING: [SOME ERROR MESSEAGE GOES HERE]");
System.exit(-1);
我寻求的是在Matlab中接收错误消息并关闭Java小程序
问题是System.exit(-1)
语句同时终止Matlab和Java,因此将我带回桌面
关于如何只关闭我的Java小程序并保持Matlab打开,以便用户收到错误消息,你们有什么建议吗。说明: 多亏了@watery和Java,Java代码似乎成为了MATLAB实例的一部分。因此,
System.exit(-1)
不仅会终止JAVA程序,还会终止MATLAB本身
解决方案:
如果您计划从matlab运行java类,请不要使用System.exit(-1)
。相反,您可以在JAVA中抛出一个未经检查的异常(您可以使用预定义的异常,也可以自己创建异常,如下所示)
示例:
if (problem)
throw new InsufficientInputException("[ERROR MESSAGE GOES HERE]");
您需要自己创建未经检查的异常,并将抛出的inputException
不足添加到嵌套if(problem)
的方法中
public class InsufficientInputException extends Exception{
public InsufficientInputException(String message) {
super(message);
}
}
这将终止JAVA程序,给用户(在MATLAB中)留下一条错误消息,但不终止MATLAB。如果我正确理解您的意思,请在不同的过程中运行MATLAB。我不知道如何/是否可行,但是我想到的唯一一件事是在Matlab和Java进程之间建立一个通信通道,这样它们就可以交换比返回代码多得多的信息。在对ZeroMQ的评论中,建议:;因为我不知道那个图书馆,我不知道它是否能满足你的要求@ᴍ阿伦ᴍaroun我不完全确定这将如何解决它-你是指与watery相同吗?@watery可能是。但是,我不熟悉ZeroMQ,正在寻找一种快速而肮脏的方法来终止java应用程序,而不终止matlab脚本。您已经看到了吗?我刚刚查看了索引,从第7章的段落标题来看,Java代码似乎是同一个Matlab实例的一部分(即,您调用的不是外部程序,而是一个Java库,您可以称之为Matlab库),也许这就是问题的根源。然后,您不需要调用
System.exit()
来关闭Java程序,只需从main()
返回结束它即可。如果这是正确的解决方案,您应该将其标记为答案,如@DennisJaheruddin建议的那样。