Giả sử bạn có chuỗi “8”, bạn muốn chuyển nó thành số 8. Bạn sẽ làm
như sau
let a="8"
let number = NSNumberFormatter().numberFromString(a)
var so = number!.integerValue
let b=9+so
Lúc này biến so được tạo ra là một số nguyên với giá trị 8, nên bạn
có thể cộng nó với 9 thành 17 như ở dòng cuối.
Hãy sửa chữ “8” thành “8m”, chương trình sẽ báo lỗi ở dòng
var so = number!.integerValue vì lúc này không chuyển được “8m” thành số nên bị lỗi, chương trình bị dừng.
var so = number!.integerValue vì lúc này không chuyển được “8m” thành số nên bị lỗi, chương trình bị dừng.
Ta sẽ cho lệnh Try catch vào để ngăn chương
trình bị dừng.
do {
let number = try NSNumberFormatter().numberFromString(a)
var so = number!.integerValue
let b=9+so
}
Catch let error as NSError{
print("Lỗi chuyển kiểu")
}
Chương trình vẫn bị lỗi, trong khi lẽ ra nó phải in ra bên phải
dòng chữ báo lỗi chứ không phải là hiện dấu đỏ báo interrupted, tức bị dừng
không chạy.
Để bắt được lỗi, ta phải dùng lệnh if như sau:
iflet number = NSNumberFormatter().numberFromString(a){
var so = number.integerValue
let b=9+so
}
else{
print("Lỗi
chuyển kiểu")
}
Kết quả màn hình đã in ra dòng lỗi, chương trình không bị dừng.
Bỏ chữ m trong biến a đi, mọi thứ lại bình thường, kết quả ra 17
đúng như lệnh if.
Tại sao dùng try catch mà không bắt được lỗi, đó là vì nó không support cho trường hợp này, nhưng trong khi lập trình ta vẫn có khi phải dùng nó.
Lệnh try catch giới thiệu ở đây để bạn biết, sau này thấy nó coi như bạn cũng đã biết rồi.
No comments:
Post a Comment