我有一个Java应用程序代码,它具有以下自定义异常结构
SettlementException
扩展Exception
PolicyMissingException
扩展SettlementException
PolicyExpiredException
扩展SettlementException
我在尝试PolicyMissing
和PolicyExpired
的代码中有一些try / catch块并抛出相同的内容。
try
{
if (Policy != null)
{
...
}
else
{
throw new PolicyMissingException(“Policy missing”);
}
}
catch(PolicyMissingException e)
{
e.printstacktrace();
}
除了SettlementException
和PolicyMissing
之外我还有什么方法可以抛出PolicyExpired
吗?
答案 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?)?