我正在审查 GitHub 作者的各种编码风格以学习和获得灵感,而这一个让我感到困惑。一位作者一直在本地处理的 catch 块中使用额外的分号。
catch (SpecificException e) {
;
}
当想在本地忽略异常时,我会写
catch (SpecificException e) {}
由于这两者之间没有区别,那么为什么要使用额外的分号呢?
我正在审查 GitHub 作者的各种编码风格以学习和获得灵感,而这一个让我感到困惑。一位作者一直在本地处理的 catch 块中使用额外的分号。
catch (SpecificException e) {
;
}
当想在本地忽略异常时,我会写
catch (SpecificException e) {}
由于这两者之间没有区别,那么为什么要使用额外的分号呢?
;
是一个空的语句,所以你要添加多少并不重要。
不需要添加额外的;
来表示空的 catch 块。您使用的方式应该是首选,并且更清晰。额外;
的简直是荒谬的。
话虽如此,这两种块的样式都catch
应该避免。你不应该有一个空的 catch 块。这弊大于利。您至少应该将 catch 块设置为:
catch (Exception e) {
e.printStackTrace();
}
除此之外,你应该尽量不要有一个 catch 块来捕获各种Exception
s。您应该为特定类型的异常创建 catch 块,以便您可以以不同的方式处理它们。
这是个人喜好,作者可能会使用它,因此空的 catch 块更明显。
首先,为什么有一个 catch 块对它什么都不做。话虽如此,如果我出于某种原因有一个空的 catch 块,我会这样做,因为catch (Exception) {}
这只是改变了它仍然可以识别空的 catch 块,但不会给我警告说 'e' 已初始化但从未被引用。
这可能是个人偏好,就像您检查 java 文档中的Calendar.getInstance()方法一样,您会注意到他们使用相同的编码风格偏好。
public static Calendar getInstance(TimeZone arg, Locale arg0) {
return createCalendar(arg, arg0);
}
private static Calendar createCalendar(TimeZone arg, Locale arg0) {
CalendarProvider arg1 = LocaleProviderAdapter.getAdapter(CalendarProvider.class, arg0)
.getCalendarProvider();
if (arg1 != null) {
try {
return arg1.getInstance(arg, arg0);
} catch (IllegalArgumentException arg6) {
;
}
}