Skip to content

Commit f8a6abe

Browse files
committed
Dev: fix error handling
1 parent f1dde48 commit f8a6abe

2 files changed

Lines changed: 28 additions & 4 deletions

File tree

compiler/src/main/java/com/readdle/codegen/SwiftBlockDescriptor.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,10 +207,18 @@ File generateCode() throws IOException {
207207

208208
swiftWriter.emitStatement("if let throwable = JNI.ExceptionCheck() {");
209209
if (isThrown) {
210-
swiftWriter.emitStatement("throw Error.from(javaObject: throwable)");
210+
swiftWriter.emitStatement("if let error = try? NSError.from(javaObject: throwable) {");
211+
swiftWriter.emitStatement("throw error");
212+
swiftWriter.emitStatement("} else {");
213+
swiftWriter.emitStatement("fatalError(\"JavaException\")");
214+
swiftWriter.emitStatement("}");
211215
}
212216
else {
217+
swiftWriter.emitStatement("if let error = try? NSError.from(javaObject: throwable) {");
218+
swiftWriter.emitStatement("fatalError(\"JavaException: \\(error) \")");
219+
swiftWriter.emitStatement("} else {");
213220
swiftWriter.emitStatement("fatalError(\"JavaException\")");
221+
swiftWriter.emitStatement("}");
214222
}
215223
swiftWriter.emitStatement("}");
216224

compiler/src/main/java/com/readdle/codegen/SwiftCallbackFuncDescriptor.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,18 @@ void generateCode(SwiftWriter swiftWriter, String javaFullName, String swiftType
195195
swiftWriter.emit(") else {");
196196
swiftWriter.emitStatement("if let throwable = JNI.ExceptionCheck() {");
197197
if (isThrown) {
198-
swiftWriter.emitStatement("throw Error.from(javaObject: throwable)");
198+
swiftWriter.emitStatement("if let error = try? NSError.from(javaObject: throwable) {");
199+
swiftWriter.emitStatement("throw error");
200+
swiftWriter.emitStatement("} else {");
201+
swiftWriter.emitStatement("fatalError(\"JavaException\")");
202+
swiftWriter.emitStatement("}");
199203
}
200204
else {
201-
swiftWriter.emitStatement("fatalError(\"Don't support exception here!\")");
205+
swiftWriter.emitStatement("if let error = try? NSError.from(javaObject: throwable) {");
206+
swiftWriter.emitStatement("fatalError(\"JavaException: \\(error) \")");
207+
swiftWriter.emitStatement("} else {");
208+
swiftWriter.emitStatement("fatalError(\"JavaException\")");
209+
swiftWriter.emitStatement("}");
202210
}
203211
swiftWriter.emitStatement("} else {");
204212
if (isReturnTypeOptional) {
@@ -215,10 +223,18 @@ void generateCode(SwiftWriter swiftWriter, String javaFullName, String swiftType
215223

216224
swiftWriter.emitStatement("if let throwable = JNI.ExceptionCheck() {");
217225
if (isThrown) {
218-
swiftWriter.emitStatement("throw Error.from(javaObject: throwable)");
226+
swiftWriter.emitStatement("if let error = try? NSError.from(javaObject: throwable) {");
227+
swiftWriter.emitStatement("throw error");
228+
swiftWriter.emitStatement("} else {");
229+
swiftWriter.emitStatement("fatalError(\"JavaException\")");
230+
swiftWriter.emitStatement("}");
219231
}
220232
else {
233+
swiftWriter.emitStatement("if let error = try? NSError.from(javaObject: throwable) {");
234+
swiftWriter.emitStatement("fatalError(\"JavaException: \\(error) \")");
235+
swiftWriter.emitStatement("} else {");
221236
swiftWriter.emitStatement("fatalError(\"JavaException\")");
237+
swiftWriter.emitStatement("}");
222238
}
223239
swiftWriter.emitStatement("}");
224240
}

0 commit comments

Comments
 (0)