Java 異常處理3
發(fā)表時間:2024-05-26 來源:明輝站整理相關軟件相關文章人氣:
[摘要]優(yōu)勢2:向調用堆棧上層傳遞錯誤 異常處理的第二個優(yōu)勢是向方法的調用堆棧上層傳遞錯誤報告的能力。假如readFile方法是主程序調用的一系列嵌套方法中的第四個方法:方法1調用方法2,方法2調用方法3,方法3調用readFile,代碼結構如下所示: method1 call m...
優(yōu)勢2:向調用堆棧上層傳遞錯誤
異常處理的第二個優(yōu)勢是向方法的調用堆棧上層傳遞錯誤報告的能力。假如readFile方法是主程序調用的一系列嵌套方法中的第四個方法:方法1調用方法2,方法2調用方法3,方法3調用readFile,代碼結構如下所示:
method1 {
call method2;
}
method2 {
call method3;
}
method3 {
call readFile;
}
還假如method1是唯一的能夠處理readFile方法中所可能發(fā)生的錯誤的方法,那么傳統(tǒng)的錯誤處理技術會強制method2和method3來傳遞通過readFile調用堆棧所返回的錯誤代碼,直到錯誤代碼傳遞到method1-因為只有method1能夠處理這些錯誤,其代碼結構如下所示:
method1 {
errorCodeType error;
error = call method2;
if (error)
doErrorProcessing;
else
proceed;
}
errorCodeType method2 {
errorCodeType error;
error = call method3;
if (error)
return error;
else
proceed;
}
errorCodeType method3 {
errorCodeType error;
error = call readFile;
if (error)
return error;
else
proceed;
}
回憶一下,Java運行時環(huán)境搜尋調用堆棧來查找任意的處理特殊的異常的方法。一個方法能夠拋出它內部的任何異常,所以允許一個上層調用堆棧的方法來捕獲它。因此只有處理相關錯誤的方法來處理發(fā)現的錯誤,代碼結構如下所示:
method1 {
try {
call method2;
} catch (exception e) {
doErrorProcessing;
}
}
method2 throws exception {
call method3;
}
method3 throws exception {
call readFile;
}
無論怎樣,就像偽代碼所展示的那樣,躲避異常需要中間方法做一些工作。任意被檢查到的由內部方法的拋出的異常必須在這個方法的throws子句中被指定。