Java 避免在每条线都可以抛投的情况下多次尝试捕捉

Java 避免在每条线都可以抛投的情况下多次尝试捕捉,java,exception,syntax,Java,Exception,Syntax,假设我有以下陈述: try { this.startTime = dateFormat.parse(startTime); this.endTime = dateFormat.parse(endTime); } catch (ParseException e) { e.printStackTrace(); } 这里两行都可以抛出异常,但是如果startTime为空而endT

假设我有以下陈述:

        try {
            this.startTime = dateFormat.parse(startTime);
            this.endTime =  dateFormat.parse(endTime);
        } catch (ParseException e) {
            e.printStackTrace();
        }
这里两行都可以抛出异常,但是如果startTime为空而endTime为空,那么在这个块的末尾,这两行都将为null

是否有一种方法可以捕获异常,并且仍然遍历每个语句,而不为每个语句创建try-catch块

没有

在抛出异常后,try块中的执行将中断。因此,如果希望在抛出异常的情况下执行后续行,则它们不应位于try块中。因此,您可能最终会:

try {
    this.startTime = dateFormat.parse(startTime);
} catch (ParseException e) {
    e.printStackTrace();
}
try {
    this.endTime =  dateFormat.parse(endTime);
} catch (ParseException e) {
    e.printStackTrace();
}
提取parseDate之类的方法以使事情变得更好:

    this.startTime = parseDate(startTime);
    this.endTime = parseDate(endTime);

wrap dateFormat.parsexxx;使用您自己的方法,只需在内部执行try/catch。您可以在finally块中分配endTime,而finally块本身将具有try-catch。但这比你已经有的更难看了。@Maciej是的,但如果我有更多不同的说法,那么它就不能概括。“哦,好吧!”shinzou通常不是每个语句都抛出异常。