例外オブジェクト
Swift
Error
プロトコルに準拠した enum を定義して使う
swift
enum MyError: Error {
case NotImplemented
}
struct Struct01 {
func func01() throws {
throw MyError.NotImplemented
}
}
Result
という enum と合わせて使う。
さらに、enum の associated value と組み合わせて、
swift
enum MyError: Error {
case NotSupported
}
func check3(_ v: Int) -> Result<String, MyError> {
if String(v).contains("3") {
return .success("\(v)!!!")
} else {
return .failure(.NotSupported)
}
}
func execCheck3(_ v: Int) {
let r = check3(v)
switch r {
case .success(let v):
print(v)
case .failure(let e):
if e == .NotSupported {
print("not supported ...")
} else {
print("some error occurred ...")
}
}
}
execCheck3(13) // => 13!!!
execCheck3(21) // => not supported ...
success のときの結果が取得したいだけの場合はこれでも。
swift
let r = check3(v)
let x = try? r.get()
TypeScript
txt
Exception は無いみたい
Error がある
- name
- message
- stack: string ...?
Ruby
txt
Exception クラス
class # 種類(クラス名)
message # メッセージ
backtrace # 位置情報
- 独自の例外クラスを使う場合は Exception クラスを継承