五.處理本機(jī)代碼中的異常 為了處理以Java代碼實(shí)現(xiàn)的方法執(zhí)行中拋出的異常,或者是以本機(jī)代碼編寫(xiě)的方法拋出的Java異常,,JNI提供了Java異常機(jī)制的鉤子程序,。該機(jī)制與C/C++中常規(guī)函數(shù)實(shí)現(xiàn)的標(biāo)準(zhǔn)錯(cuò)誤處理無(wú)關(guān)。JNI提供一個(gè)函數(shù)集來(lái)在本機(jī)代碼中檢查,、分析和處理Java異常,。 (1).如果一個(gè)異常已經(jīng)拋出,下面的函數(shù)返回JNI_TRUE,,否則返回JNI_FALSE:
jboolean ExceptionCheck();
(2).ExceptionOccurred函數(shù)獲取正在被拋出異常的一個(gè)本地引用。本機(jī)代碼或者Java代碼必須處理該異常: jthrowable ExceptionOccurred();
(3).ExceptionDescribe函數(shù)打印有關(guān)剛剛被拋出到標(biāo)準(zhǔn)錯(cuò)誤輸出中的異常信息,。該信息包括一個(gè)棧追蹤信息: void ExceptionDescribe();
(4).ExceptionClear函數(shù)清理一個(gè)剛剛拋出的異常: void ExceptionClear();
(5).Throw 函數(shù)拋出一個(gè)已經(jīng)創(chuàng)建的異常,。如果異常成功拋出,返回0,;否則返回一個(gè)負(fù)值: jint Throw(jthrowable obj); (6).ThrowNew函數(shù)基于clazz創(chuàng)建一個(gè)異常,,它應(yīng)該是繼承自Throwable,,并且異常文本是由msg(按照UTF-8)指定。如果異常的構(gòu)造以及拋出成功,,返回0,;否則返回一個(gè)負(fù)值。 jint ThrowNew(jclass clazz,const char *msg);
(7)FatalError函數(shù)會(huì)生成致命錯(cuò)誤信號(hào),。一個(gè)致命錯(cuò)誤是特指無(wú)法恢復(fù)的情況,。VM在調(diào)用該函數(shù)之后將會(huì)關(guān)閉: void FatalError(const char *msg); |
|
來(lái)自: android之情殤 > 《android》