Avoid exceptions in finalizers
このページは日本語には対応しておりません。随時翻訳に取り組んでいます。
翻訳に関してご質問やご意見ございましたら、
お気軽にご連絡ください。
ID: csharp-best-practices/finalizer-no-exception
Language: C#
Severity: Warning
Category: Best Practices
Description
Do not throw exceptions in finalizer blocks, as it can terminate the whole process if handled incorrectly.
From the official documentation: “If Finalize or an override of Finalize throws an exception, and the runtime is not hosted by an application that overrides the default policy, the runtime terminates the process and no active try
/finally
blocks or finalizers are executed”.
Learn More
Non-Compliant Code Examples
using System.Xml;
class MyClass {
~MyClass()
{
if (foo) {
throw new MyException();
}
}
}
using System.Xml;
class MyClass {
~MyClass()
{
throw new MyException();
}
}