Swift xatolarni qayta ishlash
Swift xatolarni qayta ishlash
Xatolarni aniq tashlang (throw) va ushlang (catch) yoki kerak bo‘lganda try? yordamida muvaffaqiyatsizliklarni optional qiymatlarga aylantiring.
Throw, try, catch
Funksiyalar throw yordamida xatolarni tashlashi (throw) mumkin.
Chaqiruvchi kod try dan foydalanishi va muvaffaqiyatsizliklarni do/catch bilan qayta ishlashi yoki optional natija olish uchun try? dan foydalanishi kerak.
Sintaksis:
func f() throws -> Ttry f()try? f()do { ... } catch { ... }
Misol
enum InputError: Error { case negative }
func validate(_ n: Int) throws -> String {
if n < 0 { throw InputError.negative }
return "ok: \(n)"
}
do {
let result = try validate(-1)
print(result)
} catch {
print("error")
}
let maybe = try? validate(1)
print(maybe ?? "nil")
Maslahat: Xatolar tashlanganda ham joriy ko‘rinish sohasidan (scope) chiqishdan oldin tozalash kodini bajarish uchun defer dan foydalaning.
Defer (tozalash)
Xato tashlangan taqdirda ham ko‘rinish sohasidan chiqilganda tozalash kodi har doim bajarilishini ta’minlash uchun defer dan foydalaning.
Misol
enum FileError: Error { case fail }
func work(_ ok: Bool) throws {
print("start")
defer { print("cleanup") }
if !ok { throw FileError.fail }
print("done")
}
do { try work(false) } catch { print("error") }
Ushbu misol xato tashlanganda ham "cleanup" matnini chiqaradi va resurslar tozalanishini kafolatlaydi.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
