Exception 在使用boost时,为什么要按参数获取错误?

Exception 在使用boost时,为什么要按参数获取错误?,exception,boost,parameter-passing,Exception,Boost,Parameter Passing,我正在使用boost,我注意到它重载了许多方法,将错误用作参数。如果我知道抛出错误是一种更好的方法,那么为什么我应该使用参数来了解异常呢?有些人必须在由于某种原因或其他异常不允许的环境中编程 还有一些编程范例(例如网络编程),其中错误不是“异常事件”,而是预期的事情 boost的某些部分(例如boost.FileSystem)提供了这两种接口。 这让程序员可以选择如何处理错误 例如(来自Boost.FileSystem): 如果您更喜欢通过捕获异常来处理错误,那么一定要这样做 void copy

我正在使用boost,我注意到它重载了许多方法,将错误用作参数。如果我知道抛出错误是一种更好的方法,那么为什么我应该使用参数来了解异常呢?

有些人必须在由于某种原因或其他异常不允许的环境中编程

还有一些编程范例(例如网络编程),其中错误不是“异常事件”,而是预期的事情

boost的某些部分(例如boost.FileSystem)提供了这两种接口。 这让程序员可以选择如何处理错误

例如(来自Boost.FileSystem):

如果您更喜欢通过捕获异常来处理错误,那么一定要这样做

void copy(const path& from, const path& to);
void copy(const path& from, const path& to, system::error_code& ec);