SimpleDateFormat
是 Java 中用于解析和格式化日期的类,但在处理不符合预期格式的输入时,可能会抛出 ParseException
。为了避免这种异常,你可以采取以下策略:
ParseException
,并在 catch 块中处理异常情况。例如,你可以返回一个默认值或者向用户报告错误。import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String input = "2021-09-31"; // 这个日期是无效的,因为 9 月没有 31 号
try {
Date date = sdf.parse(input);
System.out.println("Parsed date: " + date);
} catch (ParseException e) {
System.err.println("Error parsing date: " + e.getMessage());
// 处理异常,例如返回默认值或者向用户报告错误
}
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String input = "2021-09-31";
if (isValidDate(input)) {
try {
Date date = sdf.parse(input);
System.out.println("Parsed date: " + date);
} catch (ParseException e) {
System.err.println("Error parsing date: " + e.getMessage());
}
} else {
System.err.println("Invalid date format");
}
}
private static boolean isValidDate(String input) {
String regex = "^\\d{4}-\\d{2}-\\d{2}$";
return Pattern.matches(regex, input);
}
}
DateTimeFormatter
类,你可以更优雅地处理解析异常。import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class Main {
public static void main(String[] args) {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String input = "2021-09-31";
try {
LocalDate date = LocalDate.parse(input, dtf);
System.out.println("Parsed date: " + date);
} catch (DateTimeParseException e) {
System.err.println("Error parsing date: " + e.getMessage());
// 处理异常,例如返回默认值或者向用户报告错误
}
}
}
通过采用这些策略,你可以有效地避免 SimpleDateFormat
解析异常,并提高代码的健壮性。