Nhiều khối catch
Thuộc phần Logic và luồng chương trình trong hành trình C# của Coddy. Bài học 25 trên 66.
Nhiều khối catch giúp bạn xử lý các loại ngoại lệ khác nhau bằng đoạn code riêng cho từng loại ngoại lệ.
Bắt đầu với khối lệnh try cơ bản:
try
{
int number = int.Parse("abc");
}
Thêm khối catch để xử lý một ngoại lệ cụ thể:
try
{
int number = int.Parse("abc");
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
Bạn có thể thêm nhiều khối catch để xử lý các ngoại lệ khác nhau:
try
{
int number = int.Parse("abc");
int result = 10 / number;
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}
Khối catch đầu tiên khớp sẽ chạy. Hãy sắp xếp các khối catch từ kiểu ngoại lệ cụ thể nhất đến tổng quát nhất.
Thử thách
DễTạo một phương thức có tên DivideNumbers nhận hai tham số chuỗi:
numeratorStr: chuỗi biểu thị tử sốdenominatorStr: chuỗi biểu thị mẫu số
Phương thức cần:
- Thử phân tích cú pháp cả hai chuỗi thành số nguyên
- Thử chia tử số cho mẫu số
- Trả về kết quả dưới dạng số nguyên
- Xử lý
FormatExceptionbằng cách in ra "Invalid format" và trả về 0 - Xử lý
DivideByZeroExceptionbằng cách in ra "Cannot divide by zero" và trả về 0 - Xử lý mọi ngoại lệ khác bằng khối catch tổng quát, in ra "An error occurred" và trả về 0
Tự làm thử
using System;
public class Program
{
public static int DivideNumbers(string numeratorStr, string denominatorStr)
{
// Viết code của bạn ở đây
}
public static void Main(string[] args)
{
string numeratorStr = Console.ReadLine();
string denominatorStr = Console.ReadLine();
int result = DivideNumbers(numeratorStr, denominatorStr);
Console.WriteLine("Result: " + result);
}
}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 chương trình
1Mảng nhiều chiều
Cơ bản về mảng 2 chiềuKhai báo và khởi tạo mảng 2 chiềuTruy cập phần tử mảng 2 chiềuVòng lặp lồng nhau với mảng 2 chiềuMảng răng cưaCác phép toán ma trận thường gặpÔn tập: mảng nhiều chiều4Kỹ thuật điều khiển luồng
Lệnh trả về sớmMệnh đề bảo vệCâu lệnh nhảy (goto)Break và continueLàm phẳng các câu lệnh điều kiện lồng nhau7Toán tử logic nâng cao
Đánh giá ngắn mạchToán tử logic có điều kiệnĐộ ưu tiên của toán tửÔn tập: toán tử nâng cao2Ra quyết định nâng cao
Nhiều điều kiệnLogic Boolean phức tạpSo sánh if và switchCâu lệnh switch lồng nhauÔn tập về ra quyết định nâng cao5Xử lý ngoại lệ
Cơ bản về try-catchCác loại ngoại lệNhiều khối catchLàm việc với tệpKhối finallyUsing hay try-finallyNgoại lệ tùy chỉnhÔn tập: xử lý lỗi8Hệ thống phân tích dữ liệu
Thiết lập thu thập dữ liệuLogic nhập dữ liệu3Cải tiến vòng lặp
Hiệu suất vòng lặpLặp qua dữ liệu phức tạpTừng kiểu vòng lặpTái cấu trúc vòng lặpÔn tập: vòng lặp tối ưu6Xử lý null
Cơ bản về tham chiếu nullKiểu giá trị có thể nullCác mẫu kiểm tra nullLập trình phòng vệÔn tập về an toàn với nullTự luyện tập: Trình biên dịch C# online