Sip*_*pka 0 java exception throw
我想知道为什么有些方法会抛出Exception而不是返回null?
例如Class.forName(String className)方法抛出ClassNotFoundException.如果被调用者想要通知我们为什么不返回null,我们可以用a检查结果if,而不必写try-catch块.
为什么不写这个:
try{
Class<?> c = Class.forName("foo.Bar");
} catch(ClassNotFoundException e){
...
}
Run Code Online (Sandbox Code Playgroud)
像这样:
Class<?> c = Class.forName("foo.Bar");
if(c != null) {
...
} else {
//handle that class wasn't found
}
Run Code Online (Sandbox Code Playgroud)
Exceptions当可能有特定值返回(最好null或有时-1)时,为什么要使用,以通知调用者操作失败?我知道,如果一个方法可能会失败更多的方式,调用者可以在反应中以错误信息分开来,但在这种情况下,ClassNotFoundException则只有当类找不到抛出.
而且还有性能问题,返回的速度要快null于抛出Exception不是吗?
小智 5
从调用者的角度来看,通常在代码块中处理异常比检查返回代码更容易.例如,如果您想调用可能失败的两个函数,该怎么办?然后你有类似的东西:
if (functionAWorks()) {
...
if (functionBWorks()) {
...
}
else {
...
}
}
else {
...
}
Run Code Online (Sandbox Code Playgroud)
代替:
try {
functionA();
functionB();
} catch (Exception e) {
...
}
Run Code Online (Sandbox Code Playgroud)
通常,构造返回代码处理的麻烦导致人们根本不检查返回代码.
从被调用者的角度来看,抛出异常通常是一种更简洁的方式来指示失败而不是返回代码,并且它提供了调用程序堆栈跟踪信息,这对于调试非常有用.
表现是一个不同的问题.可以说,如果您选择为项目使用托管语言,那么您已经选择不担心微观性能问题.
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |