Flutter tutorial – 2.6 Try Catch, Errors và Exceptions trong ngôn ngữ Dart
Chào các bạn đến với Flutter tutorial ! Trong chương về ngôn ngữ Dart này, Báo Flutter xin tiếp tục gửi đến các bạn nội dung tiếp theo về Try Catch, Errors, Exceptions .
Errors và Exceptions
Lỗi (Error)
Lỗi là vấn đề khá là nghiêm trọng và khó có thể “deal with” với nó, và không thể phục hồi. ví dụ: out of memory (đầy bộ nhớ)
Ngoại lệ (Exceptions)
Khi đang chạy chương trình, đột nhiên ngừng lại và xuất hiện thông báo lỗi – đó chính là ngoại lệ ( Exceptions).
Trong quá trình xây dựng phần mềm sẽ có thể sảy ra nhiều lỗi và những ngoại lệ , điều này là không tránh khỏi. Vậy cách nào để kiểm soát và phát hiện chúng ? Dưới đây là một số cách.
Try – Catch
Trong một số ngôn ngữ như Java,C#- chắc các bạn đã biết đến try-catch. Try-Catch có vai trò quan trọng trong việc sử lý lỗi hay exception phát sinh.
Ví dụ trường hợp dưới đây :
1 |
int a = int.parse("Hello"); |
Nếu không dùng try-catch, chương trình của bạn sẽ bị ngưng lại và không thể thực hiện những task ở phía sau.
Nhưng khi dùng try-catch, chương trình vẫn tiếp tục hoạt động và có thể in ra lỗi để báo cho developer.
1 2 3 4 5 6 7 8 9 |
try { int a = int.parse("Hello"); } catch(e) { print (e.toString()); } print ("Task tiếp theo"); |
Kết quả :
Try-on-catch : để bắt được loại ngoại lệ cụ thể. Ví dụ:
1 2 3 4 5 6 7 8 9 |
try { int a = int.parse("Hello"); } on FormatException{ print("Exception: Invalid String"); } catch(e) { print (e.toString()); } |
Khi bắt được chính xác loại ngoại lệ ở trước thì khối lệnh trong catch sẽ không được thực thi.
finally : try-catch-finally hay try – finally , khối lệnh trong finally sẽ được thực hiện bất chấp có sảy ra lỗi trong khối try hay không.
1 2 3 4 5 6 7 8 9 10 |
try { int a = int.parse("Hello"); } catch(e) { print (e.toString()); } finally{ print ("Khối lệnh trong finally"); } |
Kết quả:
Throw Exception
1 |
throw new Exception_name() |
Ví dụ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
main() { try { kiemTraTuoi(-5); } catch(e) { print('Nhập tuổi không được âm'); } } void kiemTraTuoi(int tuoi) { if(tuoi<0) { throw new FormatException(); } else if (tuoi>60) { print ("Bạn đã già"); } else print ("Bạn vẫn còn trẻ"); } |
Trong ngôn ngữ Dart cũng có một kiểu xử lý lỗi và ngoại lệ rất riêng đó là :
1 2 |
myFunc().then(processValue) .catchError(handleError); |
Trong phần này sẽ được giới thiệu trong lập trình bất đồng bộ, được giới thiệu trong bài viết cuối chương này.
Chúc các bạn có được nhiều kiến thức từ blog này của Báo Flutter !