Guards are convenient functions if incorrect values are passed in.
Guard.AgainstNullAndEmpty(subdirectory, nameof(subdirectory));
using
statements nicely cleanup on exit if you have a IDisposable
or you can create a simple disposable object by passing in a lambda.
using (Disposables.Create(() => callCount++))
{
//code
}