java开发原则_java开发中,大家处理异常的原则是什么,是如何处理的?
展開全部
最熟悉的陌生人:異常
異常的類e5a48de588b63231313335323631343130323136353331333361326365型Throwable
— Exception
—- RuntimeException
— Error
需要注意的是,RuntimeException及其子類不需要在方法簽名中顯示注明異常拋出。
例如:
void runtimeExceptionMethod1() {
throw new RuntimeException();
}
和:
void runtimeExceptionMethod2() throws RuntimeException {
throw new RuntimeException();
}
都可以,但是很多時候建議注明異常拋出。
異常的方法簽名和子類
方法簽名的異常定義等于或者是實際拋出異常的父類
void ioExceptionMethod1() throws IOException {
throw new IOException();
}
或者
void ioExceptionMethod2() throws IOException {
throw new FileNotFoundException();
}
都是可以的。
RuntimeException的特殊性
可以使用try-finally這種形式。
void runtimeExceptionMethod3() {
try {
runtimeExceptionMethod1();
} finally {
}
}
這個時候,不會處理異常,異常仍然會拋出給調(diào)用者。
異常處理分為兩種方式:
1處理
2拋給調(diào)用者
最常見的形式:
try {
} catch(Exception e) {
}
如果有額外的硬件資源或者鎖需要釋放的時候,需要增加finally.
try {
} catch(Exception e) {
} finally() {
}
舉幾個例子:
第一個例子:文件流的使用和關(guān)閉:
File realFile = new File(dir, "laplace.demo");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(realFile);
fos.write(data);
fos.flush();
} catch (Exception var9) {
var9.printStackTrace();
} finally {
Utilities.silentlyClose(fos);
}
第二個例子:鎖的釋放
Lock lock = null;
try{
lock = new ReentrantLock();
lock.lock();
// Some sentence may cause exception.
} catch (Exception e){
} finally {
if(lock != null){
lock.unlock();
}
}
處理的原則
在講述了基本的原理后,講解一下處理的原則。
調(diào)用者是否關(guān)心異常發(fā)生的后果
如果異常發(fā)生后,會要有不同的處理邏輯,那么被調(diào)用者應(yīng)該將異常拋出。
作為sdk組件而言,本身無法知道紛繁復(fù)雜的需求,所以通常是需要將異常拋出,而不是自己處理。
對于業(yè)務(wù)層代碼而言,更多時候需要考慮到借口的友善性,可能會做出異常的處理,而不是再向調(diào)用者拋出。
此外,還有一些Java規(guī)范基本的約定:
例如通常只建議處理Exception,而不建議處理Error。
但是在實際的產(chǎn)品過程中,只要不是完全不能運行的情況,我們希望給用戶的感覺是,似乎發(fā)生了部分錯誤,但是整個程序還在運行,并沒有奔潰。
所以,對于異常類型的實際處理,還取決于產(chǎn)品邏輯。
總結(jié)
以上是生活随笔為你收集整理的java开发原则_java开发中,大家处理异常的原则是什么,是如何处理的?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广西区计算机一级全称是,计算机一级考试(
- 下一篇: 天空测试显卡软件,BootCamp版本检