2009-10-22 122 views
1

我们都知道使用异常处理来控制程序的逻辑流程很糟糕。也就是说,你绝不会做的事:异常处理和程序逻辑

public void someMethod(Object someObject) { 
    try { 
     someObject.doSomething(); 
    } catch (NullPointerException npe) { 
     //handle Null case 
    } 
} 

public void someMethod(Object someObject) { 
    if(someObject != null) { 
     someObject.doSomething(); 
    } 
} 

我的问题是,什么是一些很好的例外(HAR!)这个规则?在Java中,我可以考虑使用MalformedURLException来确定一个String是否是一个URL。你见过哪些其他很酷的异常处理滥用?

回答

0

当你把它们放在服务边界上 - 从服务器到客户端(就像WCF中的错误异常 - 有一个很好的方法可以将意外的错误从服务器传回给客户端,或从sql server中传递SqlExpcetion。 。)

有时候这是确定使用它们,以节省编程时间(如格式异常,当你将字符串转换为别的东西)ECT ....

0

在.NET Framework 1.0和1.1没有一个现在有很多TryParse方法。在过去,我做了很多这样的东西:

bool IsInteger(string str) 
{ 
    try 
    { 
    Int32.Parse(str); 
    return true; 
    } 
    catch (FormatException) 
    { 
    return false; 
    } 
} 
0

我在使用java反射时已经使用了相当多的东西。

例如,在一个领域是存在于一些类上涨(我指的是超类的一个),而不是类本身,我写了这样的情况 -

try{ 
//some stuff like follows 
Field f = cls.getDeclaredField(fieldName); 
} 
catch(NoSuchFieldException e){ 
cls = cls.getSuperClass(); 
} 

中当然,这是在一个循环下,循环退出条件是当cls为空时。