DateTimePrintContext.getValue() relies on exceptions to
handle optionality. Using exceptions for flow control seems both
unexpected and very costly.
Ref: http://mail.openjdk.java.net/pipermail/core-libs-dev/2016-October/044048.html
Patch contributed by: Clément MATHIEU <clement@unportant.info>
--- old/src/java.base/share/classes/java/time/format/DateTimePrintContext.java 2016-10-09 17:01:30.326739656 +0200
+++ new/src/java.base/share/classes/java/time/format/DateTimePrintContext.java 2016-10-09 17:01:30.228738595 +0200
@@ -302,13 +302,10 @@
* @throws DateTimeException if the field is not available and the section is not optional
*/
Long getValue(TemporalField field) {
- try {
+ if (optional == 0) {
return temporal.getLong(field);
- } catch (DateTimeException ex) {
- if (optional > 0) {
- return null;
- }
- throw ex;
+ } else {
+ return temporal.isSupported(field) ? temporal.getLong(field) : null;
}
}
handle optionality. Using exceptions for flow control seems both
unexpected and very costly.
Ref: http://mail.openjdk.java.net/pipermail/core-libs-dev/2016-October/044048.html
Patch contributed by: Clément MATHIEU <clement@unportant.info>
--- old/src/java.base/share/classes/java/time/format/DateTimePrintContext.java 2016-10-09 17:01:30.326739656 +0200
+++ new/src/java.base/share/classes/java/time/format/DateTimePrintContext.java 2016-10-09 17:01:30.228738595 +0200
@@ -302,13 +302,10 @@
* @throws DateTimeException if the field is not available and the section is not optional
*/
Long getValue(TemporalField field) {
- try {
+ if (optional == 0) {
return temporal.getLong(field);
- } catch (DateTimeException ex) {
- if (optional > 0) {
- return null;
- }
- throw ex;
+ } else {
+ return temporal.isSupported(field) ? temporal.getLong(field) : null;
}
}