Rate this post

Dart Exceptions là lỗi thời gian chạy. Nó được nâng lên khi chương trình được thực thi. Chương trình không báo lỗi tại thời điểm biên dịch khi chương trình chạy nội bộ và nếu trình biên dịch Dart tìm thấy điều gì đó không phù hợp. Sau đó, nó báo lỗi thời gian chạy và việc thực thi chương trình bị chấm dứt bất thường. Loại lỗi này được gọi là Exceptions. Ví dụ – Một số nhất định bị chia cho số 0 hoặc chúng tôi cố gắng truy cập các phần tử từ danh sách trống.

Các bài viết liên quan:

Dart hỗ trợ các loại Exceptions tích hợp sau.

Sr.ExceptionsSự miêu tả
1.DefferedLoadExceptionNó được ném khi một thư viện không tải được.
2.FromatExceptionNó là Exceptions được ném khi không format được
3.IntegerDivisionByZeroExceptionNó được ném khi số bị chia cho số không.
4.IOEExceptionNó là lớp cơ sở của Exceptions liên quan đến đầu vào-đầu ra.
5.IsolateSpawnExceptionNó được ném ra khi không thể tạo một vùng cách ly.
6.TimeoutNó được đưa ra khi một thời gian chờ lịch trình xảy ra trong khi chờ kết quả không đồng bộ.

Mục tiêu chính của Exceptions là xử lý lỗi thời gian chạy và ngăn chương trình kết thúc đột ngột. Mọi Exceptions trong Dart là một kiểu con của Exception lớp được xác định trước . Dart cung cấp các kỹ thuật sau để xử lý các case Exceptions.

Các try/on/catch block

Khối try được sử dụng để giữ khối mã có thể được đưa ra một Exceptions. Khối on được sử dụng khi chúng tôi yêu cầu chỉ định các Exceptions. Khối bắt được sử dụng khi trình xử lý cần đối tượng Exceptions.

Nếu khối try tìm thấy lỗi, nó sẽ ném đến khối catch và khối catch có mã để xử lý lỗi. Khối thử phải được theo sau bởi chính xác một khối hoặc trên / bắt hoặc một khối cuối cùng.

Cú pháp của xử lý Exceptions được đưa ra dưới đây.

Cú pháp:

try {
// code that might throw an exception
}
on Exception1 {
// Specify the exception
}
Catch Exception2 {
// code for handling exception
}

Người ta nên nhớ những điểm sau đây.

  • Chúng tôi có thể xử lý nhiều case Exceptions bằng cách sử dụng nhiều hơn một khối bắt.
  •  Khối on và khối catch bao gồm lẫn nhau, có nghĩa là chúng ta có thể kết hợp cả hai – khối on và khối catch với khối try.

Trong ví dụ sau, biến x được chia tương ứng cho biến y. Mã được ném khi nó cố gắng chia cho số không. Khối on bao gồm mã để xử lý Exceptions. Hãy hiểu đoạn mã sau.

Ví dụ – Sử dụng on block

void  main () {   
   int  x =  12 ;   
   int  y =  0 ;   
   int  res;    
     
   try  {  
      res = x ~/ y;   
   }   
    on IntegerDivisionByZeroException {   
      print ( 'Không thể chia cho 0' );   
   }   
}  

Đầu ra

Không thể chia cho 0

Giải trình:

Trong đoạn mã trên, chúng ta đã khai báo ba biến x, yres trong hàm main () . Chúng tôi đã viết mã nghi ngờ trong khối try chia x cho 0 có thể được đưa ra một Exceptions. Khối thử đã tìm thấy lỗi mà điều khiển được chuyển đến khối bật có mã để xử lý lỗi. Bằng cách sử dụng điều này, chương trình đã không dừng việc thực thi của nó.

Hãy hiểu ví dụ sau bằng cách sử dụng khối bắt.

Ví dụ – Sử dụng catch Block

void main() {   
   int x = 12;   
   int y = 0;   
   int res;    
     
   try {    
      res = x ~/ y;   
   }    
// It returns the built-in exception related to the occurring exception  
   catch(E) {   
      print(E);   
   }   
}  

Ví dụ: on… catch block

void main() {   
   int x = 12;   
   int y = 0;   
   int res;    
     
   try {   
      res = x ~/ y;   
   }    
   on IntegerDivisionByZeroException catch(E) {   
      print(E);   
   }   
}  

Finally Block

Finally Block luôn thực thi cho dù có Exceptions xảy ra hay không. Nó thực thi vô điều kiện sau khi on/ try/ catch.

Cú pháp của khối cuối cùng được đưa ra dưới đây.

Cú pháp :

try {   
   // code that may be throw an exception   
}    
on Exception1 {   
   // exception handling code or specifying the exception  
}    
catch Exception2 {   
   //  code for exception handling   
}    
finally {   
   // code that should always execute; whether exception or not.  
}  

Hãy hiểu ví dụ sau về khối cuối cùng.

Ví dụ:

finally { void main() {   
   int x = 12;   
   int y = 0;   
   int res;    
     
   try {   
      res = x ~/ y;   
   }   
   on IntegerDivisionByZeroException {   
      print('Cannot divide by zero');   
   }   
  
      print('Finally block always executed');   
   }   
}  

Throwing Exceptions

Chúng tôi có thể nêu ra một Exceptions một cách rõ ràng hoặc bắt buộc. Exceptions được nêu rõ ràng nên được xử lý để tránh chương trình tồn tại một cách rõ ràng. Cú pháp được đưa ra dưới đây.

Cú pháp:

throw new Exception_name()  

Hãy hiểu ví dụ sau.

Ví dụ

main() {   
   try {   
      check_marks(-10);   
   }   
   catch(e) {   
      print('The marks cannot be negative');   
   }   
}    
void check_marks(int marks) {   
   if(marks<0) {   
      throw new FormatException();  // Raising explanation externally  
   }   
}  

Xem thêm Báo lỗi (ERROR) trong Golang

Các case Exceptions tùy biến

Như chúng ta đã thảo luận ở trên, mỗi Exceptions trong dart là kiểu con của Exception tích hợp sẵn trong lớp . Dart cung cấp sự linh hoạt để tạo Exceptions tùy chỉnh bằng cách mở rộng lớp Exceptions hiện có. Cú pháp được đưa ra dưới đây.

Cú pháp: Xác định Exceptions

class Custom_exception_Name implements Exception {   
   // can contain constructors, variables and methods   
}   

Hãy hiểu đoạn mã sau.

Ví dụ

class AmtException implements Exception {   
   String expMsg() => 'Entered Amount should be greater than zero';   
}    
void main() {   
   try {   
      withdraw_amt(-1);   
   }   
   catch(E) {   
      print(E.expMsg());   
   }    
   finally {   
      print('Ending requested operation.....');   
   }   
}    
void withdraw_amt(int amt) {   
   if (amt <= 0) {   
      throw new AmtException();   
   }   
}    

Giải thích đoạn code trên:

Trong ví dụ trên, chúng tôi đã tạo một Exceptions tùy chỉnh, AmtException . Mã đã nêu ra Exceptions nếu số tiền đã nhập không nằm trong phạm vi ngoại trừ và chúng tôi đã đính kèm lệnh gọi hàm trong khối try… catch.

Ứng dụng của Exceptions trong ngôn ngữ Dart

Có nhiều ứng dụng của Exceptions trong ngôn ngữ Dart. Dưới đây là một số ví dụ về cách sử dụng Exceptions trong Dart:

  1. Xử lý lỗi và ngoại lệ: Exceptions trong Dart cho phép bạn xử lý các tình huống bất thường và lỗi xảy ra trong quá trình thực thi chương trình. Bằng cách sử dụng cấu trúc try-catch, bạn có thể bắt (catch) các đối tượng Exception và thực hiện các hành động xử lý lỗi tương ứng. Điều này giúp đảm bảo rằng chương trình không bị dừng ngay lập tức khi gặp lỗi, mà có thể xử lý lỗi và tiếp tục thực thi các phần còn lại của chương trình.
  2. Xử lý ngoại lệ trong giao tiếp với API: Khi sử dụng các API bên ngoài, như API HTTP hoặc cơ sở dữ liệu, có thể xảy ra các tình huống ngoại lệ như mất kết nối, lỗi cú pháp, hoặc truy vấn không hợp lệ. Sử dụng Exceptions trong Dart, bạn có thể bắt (catch) và xử lý các ngoại lệ này để đảm bảo ứng dụng của bạn xử lý tình huống bất thường một cách chính xác và tránh việc gây crash hoặc dừng chương trình.
  3. Xử lý lỗi trong file IO và xử lý tệp tin: Khi làm việc với file và thao tác IO trong Dart, có thể xảy ra các lỗi như không tìm thấy file, quyền truy cập bị từ chối hoặc các vấn đề hệ thống khác. Sử dụng Exceptions, bạn có thể xử lý các tình huống lỗi này một cách tường minh và thực hiện các hành động phù hợp như thông báo cho người dùng, ghi log, hoặc thử các biện pháp khắc phục.
  4. Xử lý lỗi trong các phần mềm phân tích và xử lý dữ liệu: Khi thực hiện phân tích dữ liệu phức tạp, có thể xảy ra các lỗi như dữ liệu không hợp lệ, giá trị thiếu hoặc các vấn đề liên quan đến định dạng dữ liệu. Exceptions cho phép bạn xử lý các tình huống lỗi này một cách linh hoạt và thực hiện các hành động như bỏ qua dữ liệu không hợp lệ, ghi log lỗi, hoặc cung cấp thông báo cho người dùng.
  5. Xử lý lỗi và ngoại lệ trong các ứng dụng đa luồng: Khi phát triển ứng dụng đa luồng, việc xử lý lỗi và ngoại lệ có thể trở nên phức tạp hơn. Exceptions trong Dart cung cấp một cơ chế xử lý lỗi an toàn trong môi trường đa luồng, giúp bạn đồng bộ hóa và quản lý các tình huống lỗi trong các luồng khác nhau của ứng dụng.

Với sự hỗ trợ của Exceptions trong Dart, bạn có thể xử lý các tình huống bất thường và lỗi một cách linh hoạt và mạnh mẽ. Điều này giúp tăng tính ổn định và đáng tin cậy của ứng dụng, đồng thời cung cấp khả năng xử lý lỗi một cách tường minh và thông minh.

Xem thêm exception trong java

Lợi ích của sử dụng Exceptions trong ngôn ngữ Dart

Sử dụng Exceptions trong ngôn ngữ Dart có nhiều lợi ích quan trọng. Dưới đây là một số lợi ích chính của việc sử dụng Exceptions:

  1. Xử lý lỗi tập trung: Exceptions cho phép bạn tách riêng việc xử lý lỗi và xử lý thông thường trong chương trình. Thay vì phải kiểm tra lỗi sau mỗi dòng mã, bạn có thể sử dụng cấu trúc try-catch để bắt lỗi tại một nơi tập trung. Điều này giúp làm cho mã nguồn dễ đọc hơn và giảm sự lặp lại của mã xử lý lỗi.
  2. Quản lý tình huống ngoại lệ: Exceptions cho phép bạn xử lý các tình huống ngoại lệ và lỗi không mong muốn một cách tường minh và kiểm soát. Bằng cách sử dụng cấu trúc try-catch, bạn có thể xử lý và đưa ra hành động phù hợp khi xảy ra các tình huống bất thường. Điều này giúp tăng tính ổn định và tin cậy của ứng dụng, ngăn chặn việc crash hoặc dừng đột ngột.
  3. Giảm tác động của lỗi: Sử dụng Exceptions, bạn có thể xử lý các lỗi trong quá trình thực thi chương trình một cách chủ động và điều chỉnh. Thay vì để lỗi lan rộng và ảnh hưởng đến toàn bộ ứng dụng, bạn có thể bắt lỗi và xử lý chúng, ngăn chặn sự lan truyền và giảm tác động của lỗi lên hệ thống.
  4. Gỡ lỗi dễ dàng: Sử dụng Exceptions, bạn có thể xác định chính xác điểm xảy ra lỗi và thu thập thông tin về lỗi. Điều này giúp gỡ lỗi dễ dàng hơn bằng cách ghi log, hiển thị thông báo lỗi hoặc thực hiện các biện pháp khắc phục cụ thể. Thông tin về lỗi cung cấp cho bạn các dấu hiệu để xác định nguyên nhân gây ra lỗi và tìm ra cách sửa chữa.
  5. Cải thiện trải nghiệm người dùng: Bằng cách sử dụng Exceptions, bạn có thể xử lý các tình huống bất thường một cách lịch sự và tương tác với người dùng. Thay vì hiển thị thông báo lỗi khó hiểu và không thân thiện, bạn có thể cung cấp thông báo lỗi rõ ràng và hướng dẫn người dùng để khắc phục tình huống.

Tổng quan, việc sử dụng Exceptions trong ngôn ngữ Dart mang lại nhiều lợi ích quan trọng, bao gồm quản lý lỗi tập trung, xử lý các tình huống ngoại lệ, giảm tác động của lỗi, gỡ lỗi dễ dàng và cải thiện trải nghiệm người dùng.

Xem thêm Lập trình Flutter

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now