Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/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
Oop 对象初始化-如何处理错误_Oop_Design Patterns - Fatal编程技术网

Oop 对象初始化-如何处理错误

Oop 对象初始化-如何处理错误,oop,design-patterns,Oop,Design Patterns,可能重复: 当初始化一个对象时-什么是正确的方法来处理一个问题,这个问题将阻止对象在以后完成它的所有职责 例如,假设构造函数初始化用于远程连接的一组配置变量。并不是所有的配置变量都已正确设置,因此,当对象用于该连接时,它将无法工作,并最终引发异常 我可以想出几个解决办法 构造函数在那里抛出异常,然后 该对象提供了一种验证配置设置的方法(这意味着该对象的客户端在使用之前有检查有效状态的附加任务) 只需保持原样,并允许抛出任何异常,让客户机在出现异常时处理它们 那么,在所提供的场景中,这些选项中的

可能重复:

当初始化一个对象时-什么是正确的方法来处理一个问题,这个问题将阻止对象在以后完成它的所有职责

例如,假设构造函数初始化用于远程连接的一组配置变量。并不是所有的配置变量都已正确设置,因此,当对象用于该连接时,它将无法工作,并最终引发异常

我可以想出几个解决办法

  • 构造函数在那里抛出异常,然后
  • 该对象提供了一种验证配置设置的方法(这意味着该对象的客户端在使用之前有检查有效状态的附加任务)
  • 只需保持原样,并允许抛出任何异常,让客户机在出现异常时处理它们

  • 那么,在所提供的场景中,这些选项中的哪一个被认为是最好的方法,或者如果有其他更好的方法来处理这个问题,那会是什么呢。

    肯定会抛出一个异常。它使你的处理变得如此抽象

    它允许您以任何方式处理它,包括(但不限于):

    • 设置一个变量以确定对象中哪些功能已启用,哪些功能未启用
    • 对所述对象调用一个方法
    • 向用户显示错误
    • 调用某种错误日志记录

    如果不进行处理,异常将终止脚本,为您提供出错原因的详细调试回溯。

    取决于语言和传递配置变量的方式。您的变量集可能是一个类的实例,比如适配器,让适配器验证配置变量并抛出一些东西,不是初始值设定项本身。因此,如果配置值未正确设置,则建议从构造函数中引发异常,该配置值将在以后使对象完全运行所需。如果您知道出现问题,则一定会引发异常/,最有可能是在构造函数中。@user1189880:异常情况下应抛出异常。例外情况是指并非一切都按计划进行的情况。(您希望数据库能够连接,但出现了问题,因此失败。您抛出了一个异常)。很有可能,如果事情没有按计划进行,它会影响物体以后的能力。