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.
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ố.
- Đọc chuỗi đầu vào biểu thị một số cần chuyển đổi thành số nguyên
- Dùng khối
try-catchđể thử chuyển đổi an toàn bằngint.parse() - 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ó
- 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
- 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: 25Nế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 integerNếu đầu vào là "12", chương trình cần in ra:
Processing input: 12
Conversion successful!
The square of 12 is: 144Chươ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
}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
1Thao tác nâng cao với danh sách
Thuộc tính danh sách: đầu và cuốiTrạng thái danh sách: isEmpty và isNotEmpĐảo ngược danh sáchThêm vào danh sách: insertXóa khỏi danh sách: removeWhereTìm trong danh sách: indexOfSắp xếp danh sáchXáo trộn danh sáchÔn tập: trình sắp xếp danh sách4Thao tác nâng cao với Map
Duyệt qua MapKiểm tra khóa và giá trịCác thuộc tính của Map: khóa và giá trịThêm có điều kiện: putIfAbsentXóa mục khỏi MapMap lồng nhauÔn tập: Cập nhật kho hàng2Thao tác hàm trên danh sách
Biến đổi bằng 'map'Lọc bằng 'where'Dùng '.toList()'Kiểm tra điều kiện bằng 'any'Điều kiện với 'every'Tìm phần tử bằng 'firstWhere'Ôn tập: lọc dữ liệu5Dự án: Tính tiền giỏ hàng
Thiết lập dự ánThêm mặt hàng vào giỏ8Dự án: Trình phân tích văn bản đơn giản
Tổng quan và thiết lập dự ánĐếm ký tự3Tập hợp
Tập hợp là gì?Tạo tập hợpThêm và xóa phần tử khỏi tập hợpKiểm tra phần tử trong tập hợpChuyển danh sách thành tập hợpPhép hợp của các tập hợpPhép giao của các tập hợpPhép hiệu của các tập hợpÔn tập: danh sách khách mời không trùng lặp6Xử lý lỗi cơ bản
Ngoại lệ là gì?Khối lệnh 'try-catch'Bắt ngoại lệ bằng 'on'Khối lệnh 'finally'Ném ngoại lệÔn tập: phép chia an toànTự luyện tập: Trình biên dịch Dart online