Чтобы понять, лучше ли использовать лямбда-выражение (как я делал в оригинальном ответе ) или использовать «правильный» метод, нам нужно принять решение, основанное на том, насколько многократно используется обработка распространенных ошибок код.
Если общий код обработки ошибок полностью повторно используется другими функциями в разных классах приложения, то он, вероятно, должен быть внутренней или общедоступной функцией, которая может относиться к другому классу, если это делает организацию кода более разумный.
Если общий код обработки ошибок может быть повторно использован другой функцией только в том же классе, то он, вероятно, должен быть закрытой функцией в том же классе.
Если общий код обработки ошибок не может быть повторно использован какой-либо другой функцией и должен использоваться только этой конкретной функцией, тогда у вас есть два варианта. Первый заключается в использовании делегата для его инкапсуляции в границах функции, гарантируя, что функция не будет пропускать какие-либо подробности реализации. Второе - использовать закрытую функцию в том же классе с комментарием, который должен вызываться только той функцией, для которой она предназначена.
В третьем случае не существует четкого «наилучшего способа» сделать это, поскольку оба являются совершенно законными способами достижения одной и той же цели. Моя тенденция заключалась бы в использовании делегата, когда общий код небольшой, и / или вам необходимо поведение некоторых делегатов, например, захват переменных.
Теперь, возвращаясь к вопросу, почему я написал код с использованием делегата? У меня не было информации о том, можно ли повторно использовать код обработки ошибок, поэтому я предположил, что это не так, и решил использовать делегата, поскольку полагал, что людям будет легко перейти от этого к пониманию, что это может быть «правильным» метод (как у вас есть), тогда как, если бы я показал использование «правильной» функции, люди могут не понять, что делегат будет альтернативой.