فرق این دو این است که در try-catch اشتباهی که اتفاق افتاده (exception) قورت داده می شود. ولی در try-finally بلاک کد finally اجرا می شود و اشتباه اتفاق افتاده راه خود را طی می کند تا توسط یک handler گرفته شود . مرجع

به گفته msdn "مورد استفاده از finally برای از بین بردن منابعی که در بلاک try ساخته شده بدون در نظر گرفتن خطا می باشد."