我是Java的新手,我的问题是一个简单年龄计算器。这是我的代码:
public class Client {
public int findAge(String birthDate) throws InvalidDateFormatException {
// InvalidDateFormatException is a custom defined
int age = 0;
try {
Calendar past = new GregorianCalendar();
Calendar present = Calendar.getInstance();
past.setTime(new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH).parse(birthDate));
age = present.get(Calendar.YEAR) - past.get(Calendar.YEAR);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return (age >= 0) ? age : 0;
}
总的来说,
try {
System.out.println(c.findAge("08-09-1015"));
} catch (InvalidDateFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
现在,每次我以错误的格式传递字符串时,都会引发ParseException。有什么方法可以使它引发InvalidDateFormatException异常?
另外,如果我遵循正确的编码标准并遵循最佳实践,请对我的代码的样式和质量发表评论。
要回答您的主要问题,您需要在catch
块中抛出自定义异常:
try {
Calendar past = new GregorianCalendar();
Calendar present = Calendar.getInstance();
past.setTime(new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH).parse(birthDate));
age = present.get(Calendar.YEAR) - past.get(Calendar.YEAR);
} catch (ParseException e) {
throw new InvalidDateFormatException("invalid date: " + birthDate);
}
关于您的代码,我有几点建议:
new GregorianCalendar()
,而是喜欢Calendar.getInstance()
。findAge
解析出生日期不是该方法的责任。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句