如何从构造函数返回错误消息(String)?

时间:2013-01-28 00:52:48

标签: java constructor

要求:

  1. 通过选择一个教师,一个科目和一个科目来创建科 时间表。

  2. 系统会验证是否遵循了所有业务规则。

    • 系统检测到未遵循业务规则。

    • 系统通知用户冲突。

    • 系统不会创建新的部分。

  3. 3.System创建新的部分。

    我的问题是,如果我为section,Section(Teacher t,Subject s,Schedule c)定义构造函数,我不知道如何返回冲突的错误消息。

    我应该让我的构造函数抛出异常吗?如果是,如何从捕获的异常中返回一个字符串?如何创建该例外?

    或者是否有更好,更简单的实施?

3 个答案:

答案 0 :(得分:4)

报告构造函数失败归结为两个选项:

  1. 按照您的建议抛出异常。如果预计不会经常发生故障并且确实是“例外”,这是一种合理的方法。
  2. 如果失败是业务逻辑的正常部分,我建议使用Factory模式并返回一个包装器对象,该对象包含新创建的对象以及一个状态变量,该变量可以指示发生故障时的详细原因。

答案 1 :(得分:2)

您可以确定抛出异常。

throw new Exception("Some required files are missing");

或者创建一个新的Exception以在您的应用中使用(它将以相同的方式工作)

如果要读取try / catch语句中的消息,请执行以下操作:

try
{
  // ...
}
catch(Exception ex)
{
  System.out.println(ex.getMessage()); //this will get "Some required files are missing"
}

欲了解更多信息,请点击这些链接: http://en.wikibooks.org/wiki/Java_Programming/Throwing_and_Catching_Exceptions How to throw a general exception in Java? http://docs.oracle.com/javase/6/docs/api/java/lang/Throwable.html#getMessage()

答案 2 :(得分:1)

无法从构造函数返回值。你这样做的唯一方法是抛出某种异常。您可以使用现有的例外类型(如果有任何适用的话),也可以通过扩展Exception来创建自己的例外类型。例如:

public class MyException extends Exception {

    public MyException(){
        super();
    }

    public MyException(String message){
        super(message);
    }
}

您的构造函数只会抛出异常的新实例并设置适当的消息。创建类实例的代码将捕获异常并处理它。您可以通过调用getMessage()来获取该消息。