Vì vậy, tôi có một khối thử/cuối cùng. Tôi cần thực hiện một số phương thức trong khối cuối cùng. Tuy nhiên, mỗi một trong những phương pháp đó có thể ném một ngoại lệ. Có cách nào để đảm bảo rằng tất cả các phương pháp này được gọi là (hoặc cố gắng) mà không có lồng nhau cuối cùng khối?Trong java, có cách nào để đảm bảo rằng nhiều phương thức được gọi trong một khối cuối cùng?
Đây là những gì tôi làm ngay bây giờ, mà là khá xấu xí:
protected void verifyTable() throws IOException {
Configuration configuration = HBaseConfiguration.create();
HTable hTable = null;
try {
hTable = new HTable(configuration, segmentMatchTableName);
//...
//various business logic here
//...
} finally {
try {
try {
if(hTable!=null) {
hTable.close(); //This can throw an IOException
}
} finally {
try {
generalTableHelper.deleteTable(configuration, segmentMatchTableName); //This can throw an IOException
} finally {
try {
generalTableHelper.deleteTable(configuration, wordMatchTableName); //This can throw an IOException
} finally {
generalTableHelper.deleteTable(configuration, haplotypeTableName); //This can throw an IOException
}
}
}
} finally {
HConnectionManager.deleteConnection(configuration, true); //This can throw an IOException
}
}
}
Có cách nào hơn-nhã để làm điều này?
Bạn có thể trích xuất chúng ra thành một phương pháp dọn dẹp. – Reimeus
'Có cách nào để đảm bảo rằng tất cả các phương thức này được gọi (hoặc cố gắng) ** mà không lồng nhau cuối cùng là khối **?' –