我在IDE中的所有异常中打开了中断,并且在每次调用UnsupportedTemporalTypeException
时都会看到localDateInstance.format(DateTimeFormatter.BASIC_ISO_DATE)
。
这是正常行为还是这个错误?
堆栈跟踪采用get0
LocalDate
方法,传递的参数为OFFSET_SECONDS
。
进一步看,我看到BASIC_ISO_DATE的定义如下:
BASIC_ISO_DATE = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendValue(YEAR, 4)
.appendValue(MONTH_OF_YEAR, 2)
.appendValue(DAY_OF_MONTH, 2)
.optionalStart()
.appendOffset("+HHMMss", "Z")
.toFormatter(ResolverStyle.STRICT, IsoChronology.INSTANCE);
违规位看起来像.optionalStart()
部分,时区偏移。
我认为这是标准库的草率设计/实现。可选的格式化部分不应该导致抛出和捕获异常,从而降低性能,对于库的用户来说是不知道的。