Có cách nào để bắt nhiều exception
cùng một lúc và không phải duplicate code trong C# không?
Có cách nào để bắt nhiều exception
cùng một lúc và không phải duplicate code trong C# không?
Trong C#, bạn có thể bắt nhiều exception
cùng một lúc mà không cần phải duplicate code bằng cách sử dụng cú pháp catch
nhiều lần sau một khối try
. Tuy nhiên, nếu logic xử lý cho các exception
này giống nhau, bạn có thể muốn tìm cách để không phải viết lại cùng một đoạn code. Một cách để làm điều này là sử dụng một khối catch
duy nhất và kiểm tra kiểu của exception
bằng cách sử dụng từ khóa when
trong C# 6 trở lên, hoặc sử dụng một phương thức xử lý chung cho tất cả các exception
mà bạn muốn bắt.
when
Từ C# 6 trở lên, bạn có thể sử dụng từ khóa when
để lọc các exception
dựa trên điều kiện cụ thể, cho phép bạn xử lý nhiều loại exception
khác nhau trong cùng một khối catch
mà không cần phải duplicate code.
try
{
// Code có thể phát sinh exception
}
catch (Exception ex) when (ex is IOException || ex is UnauthorizedAccessException)
{
// Xử lý cho cả IOException và UnauthorizedAccessException
Console.WriteLine("Lỗi truy cập file.");
}
Một cách khác để tránh duplicate code khi bắt nhiều exception
là định nghĩa một phương thức xử lý chung và gọi phương thức này trong các khối catch
khác nhau.
try
{
// Code có thể phát sinh exception
}
catch (IOException ex)
{
HandleException(ex);
}
catch (UnauthorizedAccessException ex)
{
HandleException(ex);
}
void HandleException(Exception ex)
{
// Logic xử lý chung cho các exception
Console.WriteLine($"Lỗi: {ex.Message}");
}
Cả hai cách trên đều giúp bạn giảm thiểu việc phải viết lại code khi cần xử lý nhiều loại exception
khác nhau trong C#. Sử dụng từ khóa when
giúp code gọn gàng hơn nhưng cách tiếp cận với phương thức xử lý chung cho phép bạn có thêm linh hoạt trong việc xử lý exception
.
middle
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào