👻

手抜きの Error 実装

2021/06/02に公開

tl;dr

extension String: LocalizedError { }

これで手抜き実装!

今まで

Swift でコードを書いている時に今はひとまず手っ取り早く Error を throw したい時ってありませんか?

自分用の小さな CLI ツールを書いている時とかプロトタイプだったり開発初期にテンポ良くコードを書きたいときなど。

僕は今まで

enum MyError: Error {
    case custom(String)
}

みたいなコードを書いてお茶を濁していました。

でも、最近はもっと手抜きできる方法をとっています。

今の手抜き実装

冒頭で紹介したように LocalizedError に準拠した String を extension として定義するだけです。

import Foundation

extension String: LocalizedError { }

func alwaysThrows() throws {
    throw "Something went wrong."
}

do {
    try alwaysThrows()
} catch {
    print(error)
}

throw の後ろに文字列リテラルで適当なエラーメッセージを書いたらそれでおしまい。

さいごに

もちろん、事前の設計段階で発生しうるエラーの種類を考慮してちゃんと定義するとか、都度都度ちゃんと定義するとかした方が良いと思います。

自分用のツールを書いている時なんかだとこれで十分だったりするのでこういうのも良いんじゃないでしょうか。

Discussion