2014-01-06 6 views
1

Так недавно я работал над Java-апплетом, который будет выполнен из Matlab (так как matlab - это простой способ обработки и анализа больших массивов). У меня есть проблема в этом контексте. В моей программе Java я обычно обрабатывать исключения и другие ошибки, следующим образом:Завершение программы Java без выхода Matlab?

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

То, что я ищу, чтобы получить сообщение об ошибке в Matlab и завершение работы апплета Java.

Проблема заключается в том, что операторы System.exit(-1) завершают как Matlab, так и Java и, следовательно, возвращают меня на рабочий стол.

У кого-нибудь из вас есть рекомендации по отключению Java-апплета и, тем самым, оставаться открытым, чтобы пользователь получил сообщение об ошибке.

+0

Если я правильно вас понимаю, запустите Matlab в другом процессе. – Maroun

+0

Я не знаю, насколько это возможно, но единственное, что приходит на ум, - это установить канал связи между вами и процессами Matlab и Java, чтобы они могли обмениваться гораздо большей информацией, чем код возврата. В комментарии к [этому вопросу] (http://stackoverflow.com/questions/12473083/choice-of-ipc-method) предлагается ZeroMQ; поскольку я не знаю эту библиотеку, я не знаю, может ли она соответствовать вашим требованиям. – watery

+0

@ ᴍarounᴍaroun Я не совсем уверен, как это решит - вы имеете в виду то же самое, что и водянистый? – SteewDK

ответ

0

Описание: Благодаря @watery и MATLAB External Interfaces handbook оказывается, что код Java становится частью экземпляра MATLAB. Следовательно, System.exit(-1) не только завершит программу JAVA, но и сам MATLAB.

Решение: Не используйте System.exit(-1), если вы планируете запускать классы Java с MATLAB. Вместо этого вы можете сделать исключение в JAVA (вы можете использовать заранее определенные исключения или создавать исключения, как показано ниже).

Пример:

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

Где вам нужно создать непроверенным Exception себя и добавить throws InsufficientInputException к методу, где if(problem) вложен внутри.

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

Это завершит программу JAVA, оставьте пользователю (в MATLAB) с сообщением об ошибке, но не прекратить MATLAB.

+0

Если это правильное решение, вы должны отметить его как ответ, как предположил @DennisJaheruddin. – watery

Смежные вопросы