java - 使用 Try Catch 在构造函数中进行日期验证

标签 java

我需要创建一个 Date 类,在这个 Date 类中,我需要一个构造函数来验证“mm/dd/yyyy”中的日期”格式。此外,如果构造函数的参数与日期格式不匹配,它需要抛出Exception类型的异常。该类要求字段月、日和年为整数。如果传入的参数不符合日期格式,我需要将所有字段设置为0。

在我的一生中,我无法捕捉到异常。任何帮助将不胜感激。

public class Date 
{
   private int month;
   private int day;
   private int year;
   private String date;

   public Date(String aDate)
   {
      date = aDate;
      String[] str = date.split("/");
      String sMonth = str[0];
      String sDay = str[1];
      String sYear = str[2];
      month = Integer.parseInt(sMonth);
      day = Integer.parseInt(sDay);
      year = Integer.parseInt(sYear);

      try
      {
          if (month <= 12 && day <= 31)
          {
              month = month;
              day = day; 
          }
          if (sYear.length() != 4)
          {
          year = year;
          }
      }
      catch (Exception e)
      {
         month = 0;
         day = 0;
         year = 0; 
      }      
 }
}

最佳答案

先转换为int:

date = aDate;
String[] str = date.split("/");
String sMonth = str[0];
String sDay = str[1];
String sYear = str[2];

try
{
    // Here you compare String to an int, do the convertions to int first
    // to make it throw exception on non integers.
    if (month <= 12 && day <= 31)
    {
        month = month = Integer.parseInt(sMonth);
        day = Integer.parseInt(sDay); 
    }
    if (sYear.length() != 4)
    {
    year = Integer.parseInt(sYear);
    }
}
catch (Exception e)
{
   month = 0;
   day = 0;
   year = 0; 
}

更新

你需要验证自己。它需要比下面更多的验证,但只是一个提示。

try {
    // These can throw exceptions and you want to catch those too.
    month = Integer.parseInt(sMonth);
    day = Integer.parseInt(sDay);
    year = Integer.parseInt(sYear);

    if (month <= 12) {
        throw new Exception("month");
    }
    if (day <= 31) {
        throw new Exception("day");
    }    
    if (sYear.length() != 4) {
        throw new Exception("year");
    }
} catch (Exception e) {
    month = 0;
    day = 0;
    year = 0;
}

关于java - 使用 Try Catch 在构造函数中进行日期验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41072353/

相关文章:

java - 在嵌套 JAR 内的文件夹中查找文件名

java - 调用时不支持获取 "405 - Request method ' GET'method=DELETE

java - 如何让b2box主体和 Sprite 以相同速度旋转?

Java - 如何更改应用程序选项卡的颜色?

JAVA:使用 DND 重新排序的缩略图 View

java - Flux.take(x) 或 Flux.all(..) 不会等待所有排放

java - 配置更改后小部件不刷新

java - 在 Java spark ml 中创建自定义转换器

java - Hibernate 中的带注释的类

java - ZGC最大堆大小超过物理内存