我想知道,在一般编程中有什么更好或更快?避免异常或等待异常?
避免例外是:
string a = null;
list = someMethod();
if(list.Length > 0 ){
   a = list[0];
}
if(a!=null) ...
或尝试捕捉异常......
string a = null;
try{
    a = someMethod()[0];
catch{}
if(a!=null) ...
jas*_*son 20
性能不是这里最关注的问题.问题是,两者中的哪一个导致更易读/可维护/可测试的程序.您可以稍后担心性能.
通常,不要使用异常进行流量控制.它们实际上是非本地的goto,这使得程序更难以阅读和遵循.因此,它们应该保留用于特殊情况.如果您可以不使用try-catch块进行流量控制,请不要.您的程序将更具可读性和可维护性.
处理这种情况的"正确"方法是
var list = someMethod();
if(list == null || list.Length == 0) {
    // handle something bad
}
string a = list[0];
if(a != null) {
    // go
}
list如果有一个contract(Contract.Ensures)保证返回值someMethod不为null且不为空,则可以避免非空的检查而不为空.
然而,事实上,例外在当地很昂贵.它们是否会影响程序的性能(即瓶颈)是另一个问题.但是如果使用得当,异常通常不是瓶颈(当应用程序崩溃时谁会关心性能?)