Nếu tôi có mã như thế này:ngoại lệ bắt thực hành tốt nhất (. C#/net)
void a()
{
try
{
b();
}
catch (MyException)
{
// Handle any problems that occurred in b(c(d()))
}
}
void b()
{
c();
// Do something else
}
void c()
{
d();
// Do something else
}
void d()
{
// Do something, throw a MyException if it fails
}
Giả sử không dọn dẹp là cần thiết bất cứ lúc nào, nó là tốt nhất để đặt một try {} catch {throw;} xung quanh cuộc gọi đến d() trong c() và cuộc gọi đến c() trong b() hoặc là nó được coi là OK để cho ngoại lệ từ d() bong bóng lên đến một() "tự nhiên" mà không có bất kỳ can thiệp cố gắng/bắt khối?
Tôi cho rằng khối try/catch bổ sung hoạt động như một loại "tài liệu" nhưng chúng dường như không cần thiết vì vậy tôi chỉ tự hỏi những người khác sẽ xem xét cách tốt nhất.
Xin lỗi nếu điều này hơi quá cơ bản, tôi đang cố gắng giải quyết các ngoại lệ nhưng tôi dường như không có cảm giác tốt cho họ.
Liên quan đến http://stackoverflow.com/questions/22623/-net-throwing-exceptions-best-practices – gimpf