Trong một số mã Java cũ, tôi tìm thấy một lớp có chứa rất nhiều phương pháp mà tất cả sử dụng cùng một mã xử lý lỗi (try-catch với rất nhiều xử lý lỗi, khai thác gỗ và vân vân). Có vẻ như phương pháp đầu tiên đã được sao chép đơn giản và sau đó mã trong khối thử đã được điều chỉnh một chút. Đây là những gì nó về cơ bản trông giống như:Làm thế nào để đơn giản hóa một lớp với mã xử lý lỗi được sao chép của lô?
public class myClass{
public void doSomething() {
try {
//do something
} catch (Exception e) {
//extensive error handling
}
}
public void doSomethingElse() {
try {
//do something else
} catch (Exception e) {
//extensive error handling, copy-pasted from the above method
}
}
}
Làm thế nào có thể được đơn giản hóa này? Tôi không muốn thay đổi giao diện của lớp (nhiều), tôi chỉ muốn thoát khỏi các khối catch copy-dán, vì vậy mà chỉ có mã từ khối try chỉ nằm trong các phương pháp ban đầu.
Tôi nghĩ về việc sử dụng các mô hình Nhà máy Method, nơi một phương pháp thực hiện việc xử lý lỗi và gọi phương thức gốc trong khối try. Nhưng sau đó, tất cả các cuộc gọi sẽ phải trải qua phương pháp này.
Bất kỳ ý tưởng nào?
Tại sao không thể bạn chỉ cần đặt mã phổ biến ở một phương pháp mà bạn gọi từ cả hai khối catch? – John3136
tại sao bạn không chỉ cần viết một phương thức tĩnh trong một lớp xử lý ngoại lệ, được gọi trong khối catch? sau đó bắt khối sẽ chỉ có một vài hướng dẫn (gọi đến xử lý ngoại lệ, trả lại). – vulkanino