1

呼び出すmyFunction(test)と正しく動作しますが、Java 例外がスローされます

java.lang.StringIndexOutOfBoundsException: String index out of range: -1

そして、それをキャッチしたい、および/またはJava例外をキャッチしたいと思います。

私は試した :

try
  myFunction(test)
catch exp
  mess = exp.message
end 

しかし、空です... Java例外をキャッチしないmessことを確認するにはどうすればよいですか?myFunction

4

2 に答える 2

0

以下のいずれかを使用できます

  1. "exp" use ME の代わりに、実際にメッセージをキャッチして格納するのは MATLABException 変数です。

  2. "exp" の代わりに "ERROR" を使用し、メッセージを MATLAB コマンド ウィンドウに直接表示します。

于 2014-07-11T12:00:06.383 に答える
0

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)
于 2014-07-12T00:57:00.867 に答える