当你编写一个抛出异常的类时,在类中处理异常是一个好主意吗?或者让这个类的用户在主程序中处理它更好吗?
例如,用以下内容编写一个类是个好主意吗?
class Queue{
Object Queue<Object>::getFront( )
{
try
{
if( isEmpty( ) )
throw Underflow( );
} catch(Underflow E)
{
cerr<<"caught underflow\n";
return null;
}
return queuearray[ front ];
}
}
或者只是拥有
更好Object Queue<Object>::getFront( )
{
if( isEmpty( ) )
throw Underflow( );
return queuearray[ front ];
}
然后让用户在main或函数的任何地方实现异常 被叫?
答案 0 :(得分:0)
这取决于处理异常的最佳位置。如果异常是可恢复的并且不影响程序的流程,那么您可以安静地处理它并进行记录。如果您认为调用者可能能够更好地决定要做什么,那么抛出异常。
请记住,在情况非常特殊的情况下,您应该只使用例外情况 - 不受应用程序控制的限制。您在上面说明的例子并不是很理想。如果你抛出异常,为什么还要在下面的线上抓住它呢?只是做
class Queue{
Object Queue<Object>::getFront( )
{
try
{
if( isEmpty( ) )
return null;
}
return queuearray[ front ];
}
}
}