Idiomatic way of catching multiple exceptions from Java in Swift
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- À clarifier
- Activité
- À l'abandon
- Domaine
- developer-experience
Piste de recherche
Commencez par l’exemple de catch de File.swift et les wrappers FirstException et SecondException générés présentés dans l’issue. Reproduisez le comportement du catch générique à l’aide de la méthode Java qui peut lever les deux exceptions, puis examinez le comportement du bridging des exceptions entre Swift et Java. C’est terminé lorsque la gestion idiomatique prise en charge est établie et documentée, ou implémentée avec un exemple reproductible.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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 🙂
- Langage dominant
- Swift
- Étoiles
- 1.3k
- Forks
- 127
- Merge moyen
- 1 h 6 min
- PR mergées (30 j)
- 3
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de swiftlang/swift-java
-
Document main actor execution requirements in Java-hosted processesPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
swiftlang/swift-java#955 ·
Les mainteneurs répondent en général sous 1 jour
-
wrap-java: Optional convenience methods can fail to compile when a parameter shadows the method nameOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
swiftlang/swift-java#945 ·
Les mainteneurs répondent en général sous 1 jour
-
android
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
swiftlang/swift-java#663 · 4 commentaires · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 56/100
swiftlang/swift-java#949 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
swiftlang/swift-java#948 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de swiftlang/swift-java
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
swiftlang/swift-markdown#299 ·
-
area: agents follow-up
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
manaflow-ai/cmux#37234 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
Les mainteneurs répondent en général sous 1 jour
-
bug product / functions
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour