异常处理和程序逻辑

时间:2009-10-22 16:42:30

标签: java exception-handling

我们都知道使用异常处理来控制程序的逻辑流程是不好的。也就是说,你永远不会这样做:

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。你看到了什么其他很酷的异常处理滥用?

3 个答案:

答案 0 :(得分:0)

当你将它们抛出服务边界时 - 从服务器到客户端(如WCF中的故障异常) - 有一种很好的方法可以将意外错误从服务器传回客户端,或者从sql server传递SqlExpcetion。 )

有时可以使用它们来节省编程时间(比如将字符串转换为其他内容时的格式异常)等等....

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

例如,如果某个类中的某个字段存在于更高级别(我的意思是其中一个超级类)而不是类本身,那么我写了类似的东西 -

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

当然,这是一个循环,循环退出标准是当cls为空时..