MATLAB からJava 例外にアクセスする機能は、R2012b で追加されました。私が間違っていなければ、以前のバージョンでは、Java エラーに関する具体的なエラー情報がなくても、一般的な方法でしか例外をキャッチできませんでした。
例 (R2014a でテスト済み):
try
openStream(java.net.URL('http://non.existant'))
catch ME
end
キャッチされる例外は、元の Java 例外をラップする MATLAB オブジェクトです。
>> ME
ME =
JavaException with properties:
ExceptionObject: [1x1 java.net.UnknownHostException]
identifier: 'MATLAB:Java:GenericException'
message: 'Java exception occurred:
java.net.UnknownHostException: non.existant
at java.net.AbstractPlainSocketImpl.connect(Unk...'
cause: {}
stack: [0x1 struct]
そのため、エラー スタック トレース全体にアクセスできます。
>> printStackTrace(ME.ExceptionObject)
java.net.UnknownHostException: non.existant
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.<init>(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.URL.openStream(Unknown Source)