2014-01-06 36 views
1

所以最近我一直在研究將從Matlab執行的Java applet(因爲matlab是處理和分析大型數組的簡單方法)。我在這方面有一個問題。在我的Java程序我通常通過以下處理異常和其他錯誤:終止一個Java程序而不退出Matlab?

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

我追求的是獲得在Matlab中的錯誤信息,並關閉Java小程序。

問題是,System.exit(-1)陳述終止 Matlab和Java,因此帶我回到我的桌面。

你們當中有關於如何只關閉我的Java小程序的任何建議,因此,用戶收到錯誤消息特此保持Matlab的開放。

+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本身。如果您計劃從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。

+0

如果這是正確的解決方案,您應該將其標記爲答案,就像@ DennisJaheruddin所建議的那樣。 – watery