我想知道,在通用编程中什么更好或/和更快?避免异常还是等待异常?
避免异常是:
string a = null;
list = someMethod();
if(list.Length > 0 ){
a = list[0];
}
if(a!=null) ...
或者 try catch 异常...
string a = null;
try{
a = someMethod()[0];
catch{}
if(a!=null) ...
最佳答案
性能并不是这里最相关的问题。问题是,两者中的哪一个会导致程序更具可读性/可维护性/可测试性。您可以稍后再担心性能。
一般来说,不要使用异常来进行流量控制。它们实际上是一个非本地的 goto
,这使得程序更难阅读和遵循。因此,它们应该保留用于特殊情况。如果您可以不使用 try-catch
block 进行流量控制,那么就不要这样做。您的程序将更具可读性和可维护性。
处理这种情况的“正确”方法是
var list = someMethod();
if(list == null || list.Length == 0) {
// handle something bad
}
string a = list[0];
if(a != null) {
// go
}
如果存在保证从 someMethod 返回值的契约(Contract) (
不为 null 且不为空。Contract.Ensures
),您可以避免检查 list
不为空且不为空
但是,确实,异常在本地是昂贵的。它们是否会影响程序的性能(即瓶颈)完全是另一个问题。但如果使用得当,异常通常不是瓶颈(当您的应用程序崩溃时谁会关心性能?)
关于c# - 什么更好/更快? try catch 或避免异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4628314/