我们都知道使用异常处理来控制程序的逻辑流程是不好的。也就是说,你永远不会这样做:
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 :(得分: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为空时..