Fre*_*aro 1 java exception-handling jodatime
我正在使用Joda-Time处理应用程序中的日期,但发现自己很困惑。我需要使用两个字符串(一个用于日期,一个用于一天中的小时)生成一个日期。
我通过使用 RegEx 确保了一天中的时间,但仍有一些日期通过我的 RegEx(例如 2 月 30 日)。
我想过在 try 块中使用以下 DateTime 构造(一旦解析了子字符串)
DateTime(
int year,
int monthOfYear,
int dayOfMonth,
int hourOfDay,
int minuteOfHour
)
Run Code Online (Sandbox Code Playgroud)
然后在 catch 块中抛出我函数的 Exception ,但根据api doc,这个构造函数不会IllegalArgumentException像其他一些人那样抛出我期望捕获的异常。
任何人都有任何指针来判断 MoY/DoM 对是否形成有效的一对以便能够抛出异常?
虽然它没有记录,但如果值无效,它会抛出org.joda.time.IllegalFieldValueException( 的子类IllegalArgumentException)。示例代码:
import org.joda.time.*;
public class Test {
public static void main(String[] args) {
DateTime dt = new DateTime(2012, 2, 30, 0, 0);
System.out.println(dt);
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
Exception in thread "main" org.joda.time.IllegalFieldValueException: Value 30 for dayOfMonth must be in the range [1,29]
at org.joda.time.field.FieldUtils.verifyValueBounds(FieldUtils.java:235)
at org.joda.time.chrono.BasicChronology.getDateMidnightMillis(BasicChronology.java:605)
at org.joda.time.chrono.BasicChronology.getDateTimeMillis(BasicChronology.java:177)
at org.joda.time.chrono.AssembledChronology.getDateTimeMillis(AssembledChronology.java:133)
at org.joda.time.chrono.ZonedChronology.getDateTimeMillis(ZonedChronology.java:119)
at org.joda.time.chrono.AssembledChronology.getDateTimeMillis(AssembledChronology.java:133)
at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:254)
at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:195)
at org.joda.time.DateTime.<init>(DateTime.java:307)
at Test.main(Test.java:6)
Run Code Online (Sandbox Code Playgroud)
显然,如果这被记录下来会很好......
| 归档时间: |
|
| 查看次数: |
1263 次 |
| 最近记录: |