抛出多个例外

时间:2014-09-17 13:01:58

标签: java exception extends custom-exceptions

我有一个Java应用程序代码,它具有以下自定义异常结构

  • SettlementException扩展Exception
  • PolicyMissingException扩展SettlementException
  • PolicyExpiredException扩展SettlementException

我在尝试PolicyMissingPolicyExpired的代码中有一些try / catch块并抛出相同的内容。

try
{
    if (Policy != null)
    {
        ...
    }
    else
    {
        throw new PolicyMissingException(“Policy missing”);
    }
}
catch(PolicyMissingException e)
{
  e.printstacktrace();
}

除了SettlementExceptionPolicyMissing之外我还有什么方法可以抛出PolicyExpired吗?

3 个答案:

答案 0 :(得分:1)

以下代码应该允许您捕获所有三个异常,并对每个异常执行某些操作。另请注意,'捕获的顺序'也很重要(见本文下面的评论)

try
{
    if(Policy!=null)
    {
        ...
    }
    else
    {
        throw new PolicyMissingExc(“Policy missing”);
    }
}
catch(PolicyMissingExc e)
{
  e.printstacktrace();
}
catch(PolicyExpired c)
{
  //catch c here
}
catch(SettlementException b)
{
  //catch b here
}

答案 1 :(得分:0)

try
{
    if(Policy!=null)
    {
        ...
    }
    else
    {
        throw new PolicyMissingExc(“Policy missing”);
    }
}
catch(PolicyMissingExc e)
{
  e.printstacktrace();
}
catch(PolicyExpired e)
{
  e.printstacktrace();
}
catch(SettlementException e)
{
  e.printstacktrace();
}

你可以捕获多个异常,但是记住catch块必须按顺序从子类到超类,否则你将得到Unreachable catch块编译错误。

答案 2 :(得分:0)

为什么不只有一个异常类SettlementException,并将其用作所有已知问题的容器(Set?)?