这是InvalidOperationException的默认错误消息,因此在本例中不要假定它有任何重要意义…显然,甲骨文没有费心写一个明确的错误消息。
这是ClearAllPools方法的代码,根据Reflector:
public static void ClearAllPools()
{
if (!OracleInit.bSetDllDirectoryInvoked)
{
OracleInit.Initialize();
}
if (((ConnectionDispenser.m_ConnectionPools == null) || (ConnectionDispenser.m_ConnectionPools.Count == 0)) && ((ConnectionDispenser.m_htSvcToRLB == null) || (ConnectionDispenser.m_htSvcToRLB.Count == 0)))
{
throw new InvalidOperationException();
}
ConnectionDispenser.ClearAllPools();
}
所以很明显它在没有连接池的情况下抛出了这个异常,我看不到任何检查方法…所以最终唯一的选择是捕获异常