Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不退出Matlab的情况下终止Java程序?_Java_Matlab_Error Handling - Fatal编程技术网

在不退出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,因

所以最近我一直在开发一个Java小程序,它将从Matlab中执行(因为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建议的那样。