自定义异常的处理程序在哪里

Where to have the Handlers for Custom Exceptions

我的项目中定义了 2 个自定义异常。每一个都应该以不同的方式处理。

Exception A
{
   errCode
}
Exception B
{
  // other stuff
   errCode
}

主要的调用方法,是这样的

写入表的代码是否应该在异常class(比如称为 handleItself() 的方法)内。还是调用者方法应该处理它?

有多个入口点。而且我对到处都有处理逻辑犹豫不决。

哪种方法更好?

 catch (A a)
 {
   insert to table X
 }
 catch (B b)
 {
    // do other stuff
    insert to table Y
 } 

             or
 catch (A a)
 {
    a.handleItself();
 }
 catch (B b)
 {
    // do other stuff
    b.handleItself();
 }

最好不要在异常中包含任何业务逻辑,它们应该是哑对象,只包含有关它们被抛出的原因的信息。负责的 class(在大多数情况下,能够)决定如何处理它。

从这个问题的性质来看,您似乎以错误的方式使用了异常。异常就是异常,不应用于驱动软件的预期(读取正常)行为。