我有一個項目,具有以下列方式編寫的異常處理:Java:異常處理程序
父類具有所有異常處理邏輯。被調用的類只是拋出異常並且調用者類以適當的邏輯處理。
現在我面臨被調用的類的問題打開不同的東西,例如一個文件。這些文件在異常時沒有關閉。
那麼在這種情況下應該如何處理異常處理的適當方式。
class A
{
private void createAdminClient()
{
try
{
B b = new B();
b.getClinetHandler();
}
catch(CustomException1 e1)
{
}
catch(CustomException2 e1)
{
}
catch(CustomException3 e1)
{
}
catch(CustomException4 e1)
{
}
}
}
class B
{
................
................
getClinetHandler() throws Exception
{
--------------------------
---- open a file----------
--------------------------
----lines of code---------
--------------------------
Exceptions can happen in these lines of code.
And closing file may not be called
--------------------------
---- close those files----
--------------------------
}
}
這不是他們想要的。可關閉的對象在此代碼塊中不可見。 – Sean
@Sean我認爲這是他們想要的,因爲他們最終要問如何在執行後關閉文件(在'getClientHandler'方法中)。但是你確實指出了一個缺陷,因爲'b'變量不可見,我會糾正它。 –
您好Teeg,我粘貼的代碼片段,基本上父類具有所有的異常處理邏輯。如果在這種情況下選擇這種方式,那麼closeFiles和其他處理可關閉對象的邏輯必須轉到父 - 我不想要的。 – Exploring