Finally block C# with Example
try { /* code that could throw an exception */ } catch (Exception) { /* handle the exception */ } finally { /* Code that will be executed, regardless if an exception was thrown / caught or not */ } The try / catch / finally block can be very handy when reading from files. For example: FileStream f = null; try { f = File.OpenRead("file.txt"); /* process the file here */ } finally { f?.Close(); // f may be null, so use the null conditional operator. } A try block must be followed by either a catch or a finally block. However, since there is no catch block, the execution will cause termination. Before termination, the statements inside the finally block will be executed. In the file-reading we could have used a using block as FileStream (what OpenRead returns) implements IDisposable. Even if there is a return statement in try block, the finally block will usually execute; there are a few cases where it will not: When a StackOverflow occurs. Environment.FailFast The application process is killed, usually by an external source.