是否有任何方式捕獲由於JavaScript腳本評估而引發的Objective-C異常?捕獲由於JavaScript腳本而拋出的objectiveC異常
例如: 我有一個類Obj的方法canThrow,我已經通過JSExport導出。從一些腳本我調用這個方法,它確實會拋出一個異常。 我可以處理它的任何方式?
我已經嘗試將腳本評估代碼封裝在try-catch中,但這並沒有幫助。
是否有任何方式捕獲由於JavaScript腳本評估而引發的Objective-C異常?捕獲由於JavaScript腳本而拋出的objectiveC異常
例如: 我有一個類Obj的方法canThrow,我已經通過JSExport導出。從一些腳本我調用這個方法,它確實會拋出一個異常。 我可以處理它的任何方式?
我已經嘗試將腳本評估代碼封裝在try-catch中,但這並沒有幫助。
你的問題有點不清楚,但我會盡力回答。
如果您需要引發異常從Objective-C到Javascript,您應該使用-[JSContext exception]
屬性。詳情請參閱following question。
從Javascript傳遞例外的Objective-C是簡單,你只需輸出一些方法,將處理異常在Objective-C,如:
myJSContext[@"PassExceptionToObjC"] = ^void(JSValue *)jsException {
// Handle exception
}
然後在JavaScript中使用下面的代碼:
try {
// some code
}
catch (exception) {
PassExceptionToObjC(exception);
}
或者,您可以將特定的值從您的Javascript返回到Objective-C。像:
function doSomething() {
try {
// Do something
return 'Ok';
}
catch (error) {
return 'Error happens ' + error.message;
}
}
如果你需要避免扔在方法的Objective-C異常,從Javascript調用,你應該簡單地在你的Objective-C的方法或塊添加@try/@catch
:
myJSContext[@"DoSomething"] = ^void(JSValue *)someValue {
@try {
// Do something
}
@catch (NSException *exception) {
// Handle exception
}
}
或者,首選,更改Objective-C代碼的邏輯,這會觸發異常。
如果您需要避免在Objective-C中調用的Javascript中出現異常,則採用類似的方法。您只需添加try/catch
。在大多數情況下,您可以簡單地忽略從Objective-C調用的JavaScript中的異常。但我建議在任何非平凡的Javascript上實現對Objective-C的異常處理,至少可以簡化故障排除。
希望它有幫助。