Ваш вопрос немного неясен, но я все же постараюсь на него ответить.
Если вам нужно вызвать исключение из Objective-C в Javascript, вы должны использовать свойство -[JSContext exception]
. Подробности см. в следующем вопросе.
Передача исключения из 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, вам просто нужно добавить @try/@catch
в свой метод или блок Objective-C:
myJSContext[@"DoSomething"] = ^void(JSValue *)someValue {
@try {
// Do something
}
@catch (NSException *exception) {
// Handle exception
}
}
Или, что предпочтительнее, измените логику кода Objective-C, который вызывает исключение.
Аналогичный способ применяется, если вам нужно избежать исключения в Javascript, вызванного из Objective-C. Вы просто добавляете try/catch
. В большинстве случаев вы можете просто игнорировать исключения в JavaScript, вызванные из Objective-C. Но я предлагаю реализовать обработку исключений на стороне Objective-C для любого нетривиального Javascript, хотя бы для упрощения устранения неполадок.
Надеюсь, поможет.
person
Borys Verebskyi
schedule
20.03.2016