Idiomatic way of catching multiple exceptions from Java in Swift
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 25/100
- Tipo de issue
- Funcionalidade
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Estagnada
- Domínio
- developer-experience
Direção de pesquisa
Comece com o exemplo de catch de File.swift e os wrappers gerados FirstException e SecondException mostrados na issue. Reproduza o comportamento do catch genérico usando o método Java que pode lançar ambas as exceções e, em seguida, inspecione o comportamento do bridging de exceções entre Swift e Java. Considera-se concluído quando o tratamento idiomático compatível estiver estabelecido e documentado ou implementado com um exemplo reproduzível.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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 🙂
- Linguagem predominante
- Swift
- Estrelas
- 1.3k
- Forks
- 127
- Merge médio
- 2d 14h
- PRs com merge (30d)
- 5
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de swiftlang/swift-java
-
wrap-java: Optional convenience methods can fail to compile when a parameter shadows the method nameAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
swiftlang/swift-java#945 ·
Mantenedores costumam responder em até 1 dia
-
android
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
swiftlang/swift-java#663 · 4 comentários · 1 reação ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 56/100
swiftlang/swift-java#949 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
swiftlang/swift-java#948 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 54/100
swiftlang/swift-java#947 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de swiftlang/swift-java
Issues semelhantes
-
Tests fail when the Mac isn't set to EnglishTalvez já em andamento @zolferfigueiredo assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 3 dias
-
area:shell order:3 status:ready type:bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
krystianslowik/arkt#618 ·
Mantenedores costumam responder em até 1 dia
-
needs-triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 67/100
nightscout/Trio#1741 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
deepsealabs/libdc-swift#107 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
alexandrereol/ethmensa#30 ·