2010-03-16 34 views
2

我需要從C++代碼引發異常。引發異常必須包含文本和錯誤代碼。 如此常見形式:JNI,投在工作和jthrowable之間

ThrowNew(jclass clazz, const char *msg) 

不適用。這就是爲什麼我要創造我自己的Java類的實例:

public class MyException extends Exception 

,其中包含的代碼一個更多的財產。但JNI接口只有聲明

Throw(jthrowable obj) 

將MyException的實例投射到jthrowable是否正確?

回答

2

對於JVM,jthrowable是java.lang.Throwable的一個實例,所以如果您在JNI代碼中實例化異常並進行投射,它應該可以工作。

+0

@Daff :)我已經試過了,它確實有效,但是它可以在所有平臺上使用還是使用一些新的JDK? – Dewfy 2010-03-16 16:10:39

+0

我在Linux和Windows中使用它,並沒有問題。由於它是JVM的一部分(並且例外一直是Java的一部分),所以您不應該期待任何問題。 – Daff 2010-03-16 16:41:56

+0

很想看到這個代碼示例/片段,因爲我現在正在經歷這個過程! – bbqchickenrobot 2012-09-08 04:19:48