以下のコードは、わかっているとおりに解析例外をスローするはずですが、そうではありません。ドキュメントを見てもそれを理解できませんでした。日付の解析が無効な形式で失敗しない
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.US);
dateFormat.setLenient(false);
dateFormat.parse("20160821_$folder$");
以下のコードは、わかっているとおりに解析例外をスローするはずですが、そうではありません。ドキュメントを見てもそれを理解できませんでした。日付の解析が無効な形式で失敗しない
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.US);
dateFormat.setLenient(false);
dateFormat.parse("20160821_$folder$");
これはjavadocはこう言われる、
は日付を生成するために、指定された文字列の先頭からテキストを解析します。このメソッドは、指定された文字列のテキスト全体を使用することはできません。
一致が検出される限り、ここではそうであるようにさらにスキャンが停止します。
厳密なチェックが必要な場合は、RegEx
を追加して、このような文字列が解析されないようにすることができます。
それはそれを説明します。私はなぜ彼らが寛大なフラグを使用していないのだろうかと思います。しかし、これは文書化されているので、これはバグではありません。 –
Java 8を使用している場合は、厳密なDateTimeFormatterを使用して、例外で例外をスローします。 – assylias