Nhìn chung, việc sử dụng thử / bắt mà phần lớn không được dùng nữa, bởi vì khối bắt quá đắt từ điểm tài nguyên. Sử dụng thử / bắt nhắc nhở tôi về quản lý rủi ro . Quản lý rủi ro có hai khía cạnh:
- Xác suất rủi ro xảy ra
- Những thiệt hại nó có thể có
Bây giờ, nếu bạn đi ra khỏi nhà, một cây đàn piano rơi xuống đầu bạn ở đâu đó trong khi rất khó xảy ra (có thể là 0,001%), nhưng có thể giết chết bạn.
Xử lý ngoại lệ là như thế. Thử khối không đắt. Nhưng khối bắt thực sự tốn kém, bởi vì nó cần tạo một bảng theo dõi ngăn xếp và làm các công việc khác. Do đó, khi đưa ra quyết định về khối thử / bắt, bạn nên xem xét số lần bạn có thể nhấn khối bắt. Nếu trong số 10.000 lần sử dụng, bạn chỉ đánh nó 1 lần, sau đó sử dụng nó. Nhưng nếu đó là một hình thức và người dùng có thể không điền chính xác 50% lần, thì bạn nên tránh đưa khối thử / bắt vào hoạt động ở đó.
Ở những nơi có xác suất xảy ra ngoại lệ cao, nên sử dụng if {} else {}
các khối để tránh xảy ra ngoại lệ. Ví dụ: nơi bạn muốn chia hai số, thay vì viết:
try
{
int result = a/b;
}
catch (DivisionByZeroException ex)
{
// Showing a message here, and logging of course.
}
bạn nên viết:
if (b == 0)
{
int result = a/b;
}
else
{
// Showing a message to user to change the value of b, etc.
}