This is a block of program statements that will be executed regardless if an exception is thrown or not. A finally block is typically associated with a try/catch block, although finally could be used if catch block does not present. This is useful for operations that must be performed regardless if an exception was thrown or not (e.g., closing a file, deallocating unmanaged memory, writing to a database, etc)

C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development: Build applications with C#, .NET Core, Entity Framework Core, ASP.NET Core, and ML.NET using Visual Studio Code, 4th Edition
ASP.NET Core 3 and Angular 9: Full stack web development with .NET Core 3.1 and Angular 9, 3rd Edition
C# in Depth, 4th Edition