Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从构造函数返回错误消息(字符串)?_Java_Constructor - Fatal编程技术网

Java 如何从构造函数返回错误消息(字符串)?

Java 如何从构造函数返回错误消息(字符串)?,java,constructor,Java,Constructor,要求: 节是通过选择一名教师、一个科目和一个项目创建的 时间表 系统验证是否遵循了所有业务规则 系统检测到未遵循业务规则 系统通知用户冲突 系统不创建新节 3.系统创建新的节 我的问题是,如果我为section,section(教师t,主题s,附表c)定义了一个构造函数,我不知道如何返回冲突的错误消息 我应该让我的构造函数抛出一个异常吗?如果是,如何从捕获的异常返回字符串?如何创建该异常 或者有更好但简单的实现吗?不可能从构造函数返回值。唯一的方法是抛出某种异常。您可以使用现有的异常类型(如

要求:

  • 节是通过选择一名教师、一个科目和一个项目创建的 时间表

  • 系统验证是否遵循了所有业务规则

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

    • 系统通知用户冲突

    • 系统不创建新节

  • 3.系统创建新的节

    我的问题是,如果我为section,section(教师t,主题s,附表c)定义了一个构造函数,我不知道如何返回冲突的错误消息

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


    或者有更好但简单的实现吗?

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

    public class MyException extends Exception {
    
        public MyException(){
            super();
        }
    
        public MyException(String message){
            super(message);
        }
    }
    

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

    获取消息。报告构造函数失败归结为两个选项:

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

  • 您可以肯定地抛出异常

    throw new Exception("Some required files are missing");
    
    或者创建一个新的异常以在应用程序中使用(其工作方式相同)

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

    try
    {
      // ...
    }
    catch(Exception ex)
    {
      System.out.println(ex.getMessage()); //this will get "Some required files are missing"
    }
    
    有关更多信息,请查看以下链接:

    与所有异常一样,
    抛出异常对象
    (使用未检查的异常或使用
    抛出
    )来抛出和
    捕获(SomeExceptionType e)
    来处理。然而,从构造函数中抛出除最可怕的异常之外的所有异常是。。讨厌的:(这里特别棘手,因为对象图上的某些业务逻辑必须在ctor中处理,才能在ctor中提出。另外,抛出/捕获泛型
    异常
    实例通常不是最佳做法。在这种情况下,如果问题的作者不想创建自己的自定义异常抛出
    IllegalArgumentException
    可能是一个合理的替代品。这样,意外的异常不会被无意中处理。