Idiomatic way of catching multiple exceptions from Java in Swift
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Feature
- Klarheit
- Muss geklärt werden
- Aktivitätsstatus
- Veraltet
- Bereich
- developer-experience
Rechercherichtung
Beginne mit dem File.swift-Catch-Beispiel und den im Issue gezeigten generierten FirstException- und SecondException-Wrappern. Reproduziere das Verhalten des generischen Catchens mit der Java-Methode, die beide Exceptions auslösen kann, und untersuche anschließend das Swift-Java-Exception-Bridging-Verhalten. Als erledigt gilt, wenn die unterstützte idiomatische Behandlung festgelegt und dokumentiert oder mit einem reproduzierbaren Beispiel implementiert ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Description
Hi everyone!
When I worked on integrating local Java library to my Swift package, I haven't found any mention about how to handle exceptions thrown by Java code in my Swift code.
I mean I still can use something like:
// File.swift
let myJavaClass = try JavaClass<MyJavaClass>(environment: jniEnvironment)
do {
try myJavaClass.throwException()
} catch {
print(error)
}
And I might have wrapped error in a string, and compare the results, but this is not what I really wanted to do...
The throwException() can throw multiple different exceptions, which are: FirstCustomException, SecondCustomException.
Their implementation in Java very simple:
// Java file
public class FirstException extends Exception {
public FirstException(String message) {
super(message);
}
}
public class SecondException extends Exception {
public SecondException(String message) {
super(message);
}
}
Since I added both to my swift-java config file, I can see them built by Swift-Java:
// Auto-generated by Java-to-Swift wrapper generator.
import CSwiftJavaJNI
import SwiftJava
@JavaClass("org.FirstException")
open class FirstException: Exception {
@JavaMethod
@_nonoverride public convenience init(_ arg0: String, environment: JNIEnvironment? = nil)
}
// And the same for another exception as well...
So, my naive approach was to use catch let syntax:
do {
try myJavaClass.throwException()
} catch let error as FirstException {
// do something with error
} catch let error as SecondException {
// do something with error
}
And, it's built successfully, but neither of catch let blocks are triggered.
If I added generic catch block, it is the one that will be executed.
Question
So, my question is, what is the idiomatic way of handling errors in the scenarios similar to one I described.
Thank you in advance 🙂
- Vorherrschende Sprache
- Swift
- Sterne
- 1.3k
- Forks
- 127
- Ø Merge
- 2 T. 14 Std.
- Gemergte PRs (30 T.)
- 5
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus swiftlang/swift-java
-
wrap-java: Optional convenience methods can fail to compile when a parameter shadows the method nameOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
swiftlang/swift-java#945 ·
Maintainer antworten meist innerhalb von 1 Tag
-
android
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
swiftlang/swift-java#663 · 4 Kommentare · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 56/100
swiftlang/swift-java#949 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
swiftlang/swift-java#948 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 54/100
swiftlang/swift-java#947 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in swiftlang/swift-java
Ähnliche Issues
-
Tests fail when the Mac isn't set to EnglishEvtl. vergeben @zolferfigueiredo hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 3 Tagen
-
area:shell order:3 status:ready type:bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
krystianslowik/arkt#618 ·
Maintainer antworten meist innerhalb von 1 Tag
-
needs-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
nightscout/Trio#1741 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
deepsealabs/libdc-swift#107 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
alexandrereol/ethmensa#30 ·