如果我抛出错误,是否需要释放连接?
Do I need to release a connection if I throw an error?
所以如果我得到一个连接池,然后发生意外并抛出错误,我是否需要额外释放一个连接?抛出错误后 MySQL 连接池会发生什么情况?
你没有告诉我们你使用的是什么编程语言,或者你想捕获哪种异常。所以很难具体。
一般来说,答案是是。始终释放/处置/解除分配任何资源,如连接和游标。这些种类的资源有时被称为 连续可重用资源 。如果你不释放它们,它们最终会被用完,你的程序将停止工作。如果你幸运的话,它会崩溃。如果你不走运,它只会挂起等待永远不会到达的资源。
一些语言使用 try {} catch() {} finally {}
模式在分配时释放资源。将您的连接释放代码放在 finally{}
块中,它将始终 运行.
C# 使用 using (var resource = getSomeResource()) {}
。此模式确保资源的 .dispose()
方法始终被调用,即使块中的代码抛出异常也是如此。
您对此越小心,您的程序 运行 不会因某种资源泄漏而崩溃的时间就越长。我提到的语言结构正是为了稳健地解决您的问题而发明的。
所以如果我得到一个连接池,然后发生意外并抛出错误,我是否需要额外释放一个连接?抛出错误后 MySQL 连接池会发生什么情况?
你没有告诉我们你使用的是什么编程语言,或者你想捕获哪种异常。所以很难具体。
一般来说,答案是是。始终释放/处置/解除分配任何资源,如连接和游标。这些种类的资源有时被称为 连续可重用资源 。如果你不释放它们,它们最终会被用完,你的程序将停止工作。如果你幸运的话,它会崩溃。如果你不走运,它只会挂起等待永远不会到达的资源。
一些语言使用 try {} catch() {} finally {}
模式在分配时释放资源。将您的连接释放代码放在 finally{}
块中,它将始终 运行.
C# 使用 using (var resource = getSomeResource()) {}
。此模式确保资源的 .dispose()
方法始终被调用,即使块中的代码抛出异常也是如此。
您对此越小心,您的程序 运行 不会因某种资源泄漏而崩溃的时间就越长。我提到的语言结构正是为了稳健地解决您的问题而发明的。