我开始用C++编写一些代码,我从一个简单的任务管理器程序中得到了这个简单的类方法,我正在编写一个实验:
void Task::setText(string text)
{
if(text.length() > MIN_LENGTH)
{
this->text = text;
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,此方法将class text属性设置为传递给方法的属性,如果它的长度高于MIN_LENGHT我所显示的代码上方定义的变量.因此,如果传递给方法的字符串的条件没有评估为true,我必须做一些事情.
在我买的C++书中,没有解释错误处理,而只是assert在任何地方使用它.因为如果表达式为false,断言只是中止程序,并且这是作为输入验证,我寻找更好的方法.
这次搜索引发了我对C++的例外.它解释了如何通过创建继承的类来创建异常exception.
良好的OOP实践表明,每个班级应该独立于该计划中的其他班级.那么我应该在哪里创建我创建的这个异常类?在同一个头文件中我定义了我的Task类?或者它应该在task.cpp我定义类的每个方法的地方?
也许这是一个愚蠢的问题,但只是想要保证安全,并从一开始就遵循良好的软件架构实践.
建议1:您需要完整阅读您的书.
如果出现每个错误都不应该抛出异常.每1000次调用函数/方法时,异常应该少发生.这里1000不是魔术值,特别是其他数字可能是合适的.
换一种说法.您需要回答的第一个问题:此错误可能发生的频率.如果这可能经常发生,那么返回值(bool或enum或int)是更好的方法.
如果您决定使用异常,最好从中派生出来std::exception.您应该将项目的例外放在单独的文件中.考虑几个班级,可能是3-10.最好在异常类中放置一个数据字段,该字段应该解释发生的事情的细节,而不是创建数百个不同的异常类.