1
Swiftのキャッチ句は網羅的でなければなりません。エラー伝搬を避けたいときはいつでもワイルドカードや空のcatch節を使う必要があるのでしょうか?例:私は関数にthrows
を追加する場合はもちろんSwiftで空またはワイルドカードのない完全なcatchブロック3.1
enum Oops: Error {
case oh, ouch, meh
}
func troublemaker() {
do { throw Oops.meh }
catch Oops.oh {}
catch Oops.ouch {}
catch Oops.meh {}
// Error: Error is not handled because the enclosing catch is not exhaustive
}
、それが固定されています。 catch {}
またはcatch _ {}
のいずれかを追加する場合も同じです。
しかし、徹底的なキャッチブロックを他の方法で作る方法はありますか?私の列挙型エラーが網羅的になるように、おそらく、許可するエラーの種類をスローするように定義しますか?
あなたがスローされるエラーを指定することはできません。 https://stackoverflow.com/questions/39618095/can-i-restrict-the-type-that-a-function-throws-in-swiftまたはhttps://stackoverflow.com/questions/30740997/what-isを比較してください2-0-do-try-catch-and-regular-java-cc-exの2つの違いがあります。 –
https://stackoverflow.com/q/40718542/2976878も参照してください。 – Hamish