Я знаю, что в C# мы не требуем, чтобы метод явно определял исключения в сигнатуре метода, которые он мог бы использовать. Но я хотел бы знать, как мы обрабатываем сценарии, в которых метод caller должен обрабатывать возможные исключения, вызванные методом callee?Как метод caller знает, какие исключения выбрасываются методом callee?
Позвольте мне пояснить мой вопрос.
Пусть существует метод, определенный в файле DLL, как
public string DoSomething()
{
// This method do something and returns a string
}
Теперь как вызывающему у меня есть знание того, что метод ожидает и того, что он возвращает в качестве result.But как я знаю, что такое возможное исключения, брошенные этим методом.
В jave у нас есть throws ключевое слово. Так что если я определял то же метод в Java, то я мог бы сделать что-то вроде ниже
public String doSomething() throws SomeException {
// do something
throw new SomeException();
}
Таким образом, вызывающие этого метода знает, что должно быть обработано на их стороне исключения.
Как достичь этого в C#, поскольку C# не имеет throws ключевое слово в сигнатуре метода?
Один из возможных способов - поймать общий Исключение объект. Но снова поймать общее исключение - это ужасный способ справиться с исключениями.
Вы всегда можете использовать комментарии Xml и перечислять там все исключения, которые выбрасывает mehtod. Таким образом, вы сможете увидеть, что при наборе текста из-за intellisense –
Даже с Java вы не просто используете обработку исключений Pokemon и называете это днем. В любом случае вам нужно понять, в каких исключениях метод бросает вызов, с которым можно рационально обращаться, и который всегда требует человеческой интерпретации. –
@Damien_The_Unbeliever Да, но в java, если метод callle повторно перебрасывает унифицированное или настраиваемое исключение (для всех исключений, с которыми этот метод имеет дело), вызывающий должен заботиться только об этом исключении. Но в C#, как даже звонящий знает, что обрабатывать, поскольку подпись метода ничего не дает. Помимо ответов, предоставленных m.rogalski и user3185569, есть ли другой способ достичь этого? Со всем уважением, но являясь разработчиком Java, он не убеждает меня определять все исключения, созданные моим методом в каком-либо файле XML. – amanraj