java - 抛出异常与使用 switch 语句返回空值

标签 java return-value

所以我有一个函数可以格式化一个日期来强制给定的枚举 DateType{CURRENT, START, END} 对于使用 switch 语句的情况,处理返回值的最佳方式是什么

public static String format(Date date, DateType datetype) {
    ..validation checks

    switch(datetype){
    case CURRENT:{
        return getFormattedDate(date, "yyyy-MM-dd hh:mm:ss");
    }               
    ... 
     default:throw new ("Something strange happend");
    }

}

或者最后抛出异常

   public static String format(Date date, DateType datetype) {
            ..validation checks

            switch(datetype){
            case CURRENT:{
                return getFormattedDate(date, "yyyy-MM-dd hh:mm:ss");
            }               
            ... 
            }

               //It will never reach here, just to make compiler happy 
        throw new IllegalArgumentException("Something strange happend");    
        }

或返回空值

public static String format(Date date, DateType datetype) {
            ..validation checks

            switch(datetype){
            case CURRENT:{
                return getFormattedDate(date, "yyyy-MM-dd hh:mm:ss");
            }               
            ... 
            }

             return null;   
}

此处的最佳做法是什么?此外,所有枚举值都将在 case 语句中处理

最佳答案

抛出异常,因为这是一个异常(exception)情况。

并且把它丢在switch之外,这样可读性会更好。否则听起来像是“默认情况下是异常(exception)”。

关于java - 抛出异常与使用 switch 语句返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2567932/

相关文章:

java - 如何识别返回的对象是否是在方法执行期间创建的 - Java

java - Eclipse birt 无法建立与 derby 数据库的连接

java - 放置 JSP 的标准做法

java - 向 JButton 添加 onResize 监听器

使用 JDBC 将记录插入数据库时​​出现 java.sql.SQLException : ORA-00928: missing SELECT keyword.

Matlab函数返回值

java - 从 Java 程序中运行另一个 Java 程序并获取输出/发送输入

javascript - 如何从事件中获取返回值?

java - 如何在第三种方法中将两种不同方法返回的值相乘?

mysql - 强制 MySQL 返回 IN 中所有选项的结果