我正在努力解决一个非常简单的问题:
我现在正在服务器应用程序上工作,我需要为异常创建一个层次结构(某些异常已经存在,但是需要一个通用框架)。我什至如何开始这样做?
我正在考虑遵循以下策略:
1)出了什么问题?
- 有人问,这是不允许的。
- 要求进行某些操作,这是允许的,但由于参数错误而无法使用。
- 有人问,这是允许的,但是由于内部错误,它不起作用。
2)谁在发起请求?
- 客户端应用
- 另一个服务器应用程序
3)消息处理:在处理服务器应用程序时,这全都与接收和发送消息有关。那么,如果发送消息出错了怎么办?
这样,我们可能会得到以下异常类型:
- ServerNotAllowedException
- ClientNotAllowedException
- ServerParameterException
- ClientParameterException
- InternalException(如果服务器不知道请求来自何处)
- ServerInternalException
- ClientInternalException
- MessageHandlingException
这是定义异常层次结构的非常通用的方法,但恐怕我可能缺少一些明显的案例。您是否对我不涉及的领域有想法,是否知道此方法的任何缺点,或者是否有更一般的方法来解决此类问题(在后一种情况下,在哪里可以找到它)?
提前致谢
catch
我使用的大多数块,我对异常的使用并不比包含的错误消息多得多。对于一个因读取文件失败而导致读取文件失败的异常情况,我实际上没有什么不同,因此在读取文件过程中我未能分配内存,因此我倾向于捕获std::exception
并报告其中包含的错误消息,也许是修饰"Failed to open file: %s", ex.what()
在打印之前将其保存到堆栈缓冲区中。