相关疑难解决方法(0)

避免 dynamic_cast 向下转换为原始类型

如何安全地向下转换(即在失败时返回 null)到基础对象的确切类型,而不会导致 的性能损失dynamic_cast,并且不必在我使用的每个类中放置支持代码?

c++ dynamic-cast

5
推荐指数
1
解决办法
902
查看次数

在C++中调度异常

如何分派异常,以便以集中,用户友好的方式处理错误处理和诊断?

例如:

  • DataHW类处理与某些数据采集硬件的通信.
  • DataHW类可能会根据许多可能的错误抛出异常:间歇性信号,无信号,CRC失败,驱动程序错误.每种类型的错误都有自己的异常类.
  • DataHW类由许多不同的代码段调用,这些代码执行不同类型的获取和分析.

正确的错误处理策略取决于异常的类型和正在尝试的操作.(在间歇性信号上,重试X次然后告诉用户;在驱动程序错误时,记录错误并重新启动驱动程序;等等)如何调用此错误处理策略?

  • 将错误恢复编码到每个异常类中:这将导致异常类相当大并包含高级UI和系统管理代码.这看起来很糟糕.
  • catch每种类型的异常提供单独的块:由于从许多不同的地方调用DataHW类catch,因此每个调用站点都必须复制每个块.这看起来很糟糕.
  • 使用一个使用基于RTTI的巨大语句catch调用某个ExceptionDispatch函数的块switch:RTTI并且switch通常表示无法应用OO设计,但这似乎是最不好的替代方案.

c++ oop exception

3
推荐指数
1
解决办法
1198
查看次数

标签 统计

c++ ×2

dynamic-cast ×1

exception ×1

oop ×1