Cách xử lý lỗi trong lập trình Swift

Share:

Bài này sẽ hướng dẫn các bạn xử lý lỗi trong ngôn ngữ Swift (2.0). Nếu bạn đã lập trình Java, có lẽ bạn đã quen thuộc với việc sử dụng khối lệnh “try/catch” để bắt lỗi, cũng như với từ khoá “throw”. Swift 2.0 cung cấp cơ chế tương tự, tuy nhiên cách viết có phần khác với Java.

1. Cách xử lý lỗi truyền thống.

Đây là cách xử lý lỗi kế thừa từ người tiền nhiệm Objective-C. Với cách này, bạn sử dụng đối tượng NSError để truyền lỗi:

Đoạn code trên khai báo biến err có kiểu NSError, sau đó nếu hàm được gọi trả về lỗi, biến err sẽ nhận giá trị lỗi đó, ngược lại nó có giá trị nil.

Cách xử lý trên khá đơn giản. Tuy nhiên, lập trình viên thường có khuynh hướng không kiểm tra giá trị err, hoặc thậm chí truyền nil vào hàm được gọi. Do đó, Swift 2.0 cung cấp cách xử lý lỗi mới, tuy nhìn có vẻ dài dòng, nhưng đảm bảo việc kiểm tra lỗi, tránh crash chương trình

2. Cách xử lý lỗi trong Swift 2.0

Xử lý lỗi trong Swift 2.0 sử dụng 5 từ khoá bao gồm: try,catch, do, throwthrows. Từ khoá do được sử dụng trong xử lý lỗi nên điều khiển vòng lặp dowhile đã được thay bằng repeatwhile.

Để minh hoạ việc xử lý lỗi, bạn hãy làm một ví dụ như dưới đây. Trước hết, tạo một project cho nền tảng iOS với kiểu “Single View”. sau đó khai báo một kiểu enum trong class “ViewController”. Kiểu enum phải extend kiểu ErrorType. Ở đây ví dụ minh hoạ việc mã hoá password, lỗi có thể bao gồm password rỗng (empty), ngắn hoặc quá rõ ràng. :

Bước tiếp theo, bạn khai báo một hàm mã hoá password:

Trong hàm trên, từ khoá “throws” được sử dụng để chỉ ra rằng hàm có thể đẩy ra một lỗi nào đó. Từ khoá “guard” được sử dụng để thực sử throw ra các lỗi tương ứng với các trường hợp đã định.

Sau đó, khi sử dụng, bạn cần sử dụng cấu trúc “do/catch” và từ khoá “try”:

Để ý rằng ngoài các trường hợp đã được khai báo vẫn cần thêm một khối catch cuối cùng. Điều này cho phép bạn khai báo thêm các trường hợp lỗi khác khi cần thiết.

Một điều khá thú vị là Swift 2.0 cung cấp một cơ chế kiểm tra đối với từ khoá “try”. Nếu bạn chắc chắn một lời gọi hàm không thể xảy ra lỗi, hoặc nếu như xảy ra lỗi thì chương trình không thể chạy được, bạn có thể dùng cấu trúc sau:

Việc dùng “try!” tương tự như câu lệnh assert trong Objective-C để đảm bảo khối lệnh được thực thi hợp lý.

Như vậy qua bài này bạn đã học được cách xử lý lỗi trong Swift 2.0 (Xcode 7). Hy vọng bạn sẽ áp dụng cơ chế này để tránh ứng dụng bị shutdown đột ngột nhé.

Share:

Leave a reply