假设流提取不会失败,这将是
if( !(stream >> token) )
throw runtime_error( "Unexpected end of recipe." );
else if( token == "something" )
// do something
else
throw runtime_error( "Unknown token" );像这样工作
if( !(stream >> token) )
throw std::runtime_error( "Unexpected end of recipe." );
if( token == "something" )
// do something
else
throw std::runtime_error( "Unknown token" );(stream = std::stringstream和token = std::string),预期的结果是token包含下一个...令牌..。从小溪里?有没有更好的方法来处理错误?像cerr << "error whatever" << endl; exit();之类的,或者我的std::runtime_error足够好了吗?
发布于 2010-06-22 22:19:30
是的,逻辑是完全相同的。
而且我永远不会调用exit() --至少在你的代码中,异常可以被其他代码捕获,而不是简单地杀死应用程序。您永远不知道将来某个时候您是否会在更大的应用程序中使用此代码,因此最好保留您的选择;)
发布于 2010-06-22 22:32:30
您的假设是正确的,这两个代码片段的行为是相同的。
异常是处理C++中意外情况的标准方法,因此我不建议使用另一种方法来处理错误,除非这种错误预计会在常见情况下发生。如果是这样的话,我会建议在你的函数上使用某种返回值通知。
https://stackoverflow.com/questions/3093959
复制相似问题