借个地,在非技术区里竟然无人问津,郁闷!
JNI,C++调用java。用env(类型:JNIEnv *)的方法,env->ExceptionCheck()得知有异常后,jthrowable e = env->ExceptionOccurred()得到这个异常。
一般在java中,用printStackTrace()就可以知道这家伙是哪丢出来的,但C++中,调用了这个函数,信息却不知道打到哪去了。怎么办呢?
我做的C++程序是MFC的,并且是图形界面没有控制台。可以用AllocConsole打开控制台,再用freopen把stdout绑上去,这样,printf打出来的东西能在打开的控制台上看到,但printStackTrace打出来的却看不到。也就是说,throwable.printStackTrace()输出流的终端不是stdout。当然我知道这是显然的,顺带提提。
怎么办哟?