Ihre Frage ist ein wenig unklar, aber ich werde versuchen, es trotzdem zu beantworten.
Wenn Sie eine Ausnahme von Objective-C in Javascript auslösen müssen, sollten Sie die Eigenschaft -[JSContext exception]
verwenden. Einzelheiten finden Sie unter following question.
Passing Ausnahme von Javascript zu Objective-C ist einfach, exportieren Sie einfach eine Methode, die Ausnahme in Objective-C wie behandelt:
myJSContext[@"PassExceptionToObjC"] = ^void(JSValue *)jsException {
// Handle exception
}
Und dann folgenden Code in Javascript verwenden:
try {
// some code
}
catch (exception) {
PassExceptionToObjC(exception);
}
Alternativ können Sie einen bestimmten Wert von Ihrem Javascript nach Objective-C zurückgeben. Wie:
function doSomething() {
try {
// Do something
return 'Ok';
}
catch (error) {
return 'Error happens ' + error.message;
}
}
Im Fall, dass Sie Objective-C Ausnahme in der Methode zu werfen, um zu vermeiden, von Javascript genannt, geben Sie einfach @try/@catch
in Ihrer Objective-C-Methode hinzufügen sollen oder Block:
myJSContext[@"DoSomething"] = ^void(JSValue *)someValue {
@try {
// Do something
}
@catch (NSException *exception) {
// Handle exception
}
}
Oder bevorzugt, Änderungslogik von Objective-C-Code, die eine Ausnahme auslöst.
Ähnliches gilt, wenn Sie eine Ausnahme in Javascript vermeiden müssen, die von Objective-C aufgerufen wird. Sie fügen einfach try/catch
hinzu. In den meisten Fällen können Sie Ausnahmen in JavaScript ignorieren, die von Objective-C aufgerufen werden. Aber ich schlage vor, die Ausnahmebehandlung auf Objective-C-Seite für jedes nicht-triviale Javascript zu implementieren, zumindest um die Fehlersuche zu vereinfachen.
Ich hoffe, es hilft.