По моему мнению, вам, как правило, следует пытаться отловить исключения, которые, как вы ожидаете, появятся в коде, который вы вызываете в блоке try, и позволить остальным быть пойманными в другом месте.Например:
try
{
// ... some code that you know may throw ArgumentException or any other known exceptions
}
catch (ArgumentException ex)
{
// ... handle the exception with a good idea of why it was thrown
}
В блоке catch вы теперь можете обработать ошибку чистым, специфическим способом, зная, что где-то в блоке try был передан недопустимый аргумент.Например, вы могли бы предупредить пользователя о том, что он предоставил неверный аргумент.
Если что-то случилось, чего вы не ожидали (например, NullReferenceException), вы, вероятно, не знаете, как восстановить его, поэтомуне перехватывая его, вы делегируете ответственность потребителю вашего компонента для обработки исключительных ситуаций в целом.
Короче говоря, вы должны перехватывать исключения, когда знаете, как обрабатывать или исправлять ошибки, и разрешать обнаружение неизвестных ошибоквыше по цепочке вызовов
Имеет смысл?