我正在尝试使用解析日期SimpleDateFormat
。由于我的服务采用多种日期格式,我采用了this https://stackoverflow.com/questions/4024544/how-to-parse-dates-in-multiple-formats-using-simpledateformat方法:
String[] formats = {
"yyyy-MM-dd'T'HH:mm:ss.SSSZ",
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
"yyyy-MM-dd'T'HH:mm:ss.SSS-HH:mm",
"EEE MMM dd HH:mm:ss Z yyyy"};
for (String format : formats)
{
try
{
return new SimpleDateFormat(format).parse(dateString);
}
catch (ParseException e) {}
}
return null;
背后的理由try-catch
是如果当前的日期格式无法解析dateString
, an Exception
将被抛出,代码将继续循环,直到找到合适的日期格式,或者返回null
.
The catch
块就在那里,所以try
块后面会有一些东西(如果后面没有任何东西,可能会发生编译错误try
).
我可以保留代码原样,但为空catch
块是不好的做法。以后其他人维护起来也会很混乱。这根本不优雅。
我可以将以下内容放入catch
block :
catch (Exception e)
{
if (!(e instanceof ParseException))
{
throw e;
}
}
但同样,里面的代码没有任何作用,因为没有Exception
另外一个ParseException
可能会被抛出try
块(我检查NullPointerException
代码前面)。用一个final
块而不是catch
块也就没用了。
有没有办法避免空或无用catch
堵塞?可以try-catch
可以完全避免吗?
类似的问题(但不完全是):
避免空的 catch 子句 https://stackoverflow.com/questions/26537048/avoiding-an-empty-catch-clause
空的 catch 块 https://stackoverflow.com/questions/16715664/empty-catch-blocks
有一个空的 catch 语句可以吗? https://softwareengineering.stackexchange.com/questions/16807/is-it-ever-ok-to-have-an-empty-catch-statement