Menu
CoddyTech

Khối lệnh 'try-catch'

Thuộc phần Logic và luồng điều khiển trong hành trình Dart của Coddy. Bài học 39 trên 65.

Bây giờ bạn đã hiểu ngoại lệ là gì, hãy cùng tìm hiểu cách xử lý chúng một cách an toàn bằng khối lệnh try-catch. Đây là công cụ cơ bản giúp chương trình không bị dừng đột ngột khi có sự cố.

Khối try-catch hoạt động bằng cách đặt đoạn code có thể gây ra sự cố trong phần try. Nếu xảy ra ngoại lệ, thay vì làm chương trình của bạn bị dừng, Dart sẽ chuyển ngay đến phần catch, nơi bạn có thể xử lý lỗi phù hợp.

try {
  // Đoạn code có thể gây ra ngoại lệ (exception)
  int number = int.parse("abc");
} catch (e) {
  // Đoạn code chạy khi xảy ra ngoại lệ
  print("Something went wrong: $e");
}

Trong ví dụ này, việc thử chuyển chuỗi "abc" thành số nguyên thường sẽ khiến chương trình của bạn gặp lỗi. Tuy nhiên, vì đoạn code được đặt trong khối try, ngoại lệ sẽ được bắt và xử lý trong khối catch. Biến e chứa thông tin về lỗi đã xảy ra.

Cách tiếp cận này giúp chương trình tiếp tục chạy ngay cả khi xảy ra những tình huống không mong muốn, nhờ đó code của bạn trở nên vững chắc và thân thiện với người dùng hơn.

challenge icon

Thử thách

Dễ

Tạo chương trình chuyển đổi chuỗi đầu vào của người dùng thành số một cách an toàn bằng khối try-catch. Chương trình cần xử lý trường hợp đầu vào không phải là số hợp lệ và ngăn chương trình gặp sự cố.

  1. Đọc chuỗi đầu vào biểu thị một số cần chuyển đổi thành số nguyên
  2. Dùng khối try-catch để thử chuyển đổi an toàn bằng int.parse()
  3. Nếu chuyển đổi thành công, tính bình phương của số đó bằng cách nhân số đó với chính nó
  4. Nếu chuyển đổi thất bại và xảy ra ngoại lệ, hãy xử lý lỗi phù hợp
  5. Hiển thị kết quả hoặc thông báo lỗi thích hợp theo đúng định dạng bên dưới

Ví dụ, nếu đầu vào là "5", chương trình cần in ra:

Processing input: 5
Conversion successful!
The square of 5 is: 25

Nếu đầu vào là "abc", chương trình cần in ra:

Processing input: abc
Error: Cannot convert 'abc' to a number
Please enter a valid integer

Nếu đầu vào là "12", chương trình cần in ra:

Processing input: 12
Conversion successful!
The square of 12 is: 144

Chương trình phải dùng khối try-catch để bao quanh thao tác int.parse(). Trong phần try, hãy thử chuyển chuỗi đầu vào thành số nguyên và tính bình phương của số đó. Trong phần catch, xử lý mọi ngoại lệ xảy ra trong quá trình chuyển đổi và hiển thị thông báo lỗi thích hợp. Chương trình cần tiếp tục chạy bình thường dù chuyển đổi thành công hay thất bại.

Tự làm thử

import 'dart:io';

void main() {
  // Đọc chuỗi đầu vào
  String? input = stdin.readLineSync();
  
  // Hiển thị thông báo đang xử lý
  print('Processing input: $input');
  
  // TODO: Viết code bên dưới
  // Dùng khối try-catch để chuyển đầu vào thành số nguyên một cách an toàn
  // Tính bình phương nếu chuyển đổi thành công
  // Xử lý mọi ngoại lệ xảy ra trong quá trình chuyển đổi
  
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch Dart online