Сначала я собирался сделать что-то вроде следующего:
public void WriteToFile(string filePath, string contents)
{
try
{
File.WriteAllText(filePath, contents)
}
catch(Exception ex)
{
//Log error
}
}
Но затем я решил перехватить все конкретные исключения для метода WriteAllText, например:
public void WriteToFile(string filePath, string contents)
{
try
{
File.WriteAllText(filePath, contents);
}
catch (IOException ex)
{
//An I/O error occured when opening the file
}
catch (ArgumentException ex)
{
//The exception that is thrown when one of the arguments provided to a method
that is not valid.
}
catch (UnauthorizedAccessException ex)
{
//Unauthorized access
}
catch (SecurityException ex)
{
//Security exception
}
catch (NotSupportedException ex)
{
//Invoked method not supported
}
}
Выше очень многословно и с другими методами, это может быть больше.Есть ли лучший способ сделать это, поэтому мне не нужно писать так много операторов catch.Кроме того, если возникло исключение, лучше вернуться из него, зарегистрировать его.Меня всегда смущает, как с этим справиться.
Я заметил некоторую путаницу.Я собираюсь обработать исключения, я оставил обработку исключения, чтобы сохранить это коротким.Я собираюсь использовать переменную ex.Вопрос больше в том, чтобы делать просто catch (Exception ex) или несколько операторов catch.
Я также говорю об этом, потому что всегда здесь говорю, что лучше обрабатывать конкретные исключения, а не catch-all.Если я неправильно понял это, уточните, что это значит.