Что было бы неправильно делать что-то подобное?
bool isLoggedIn = false;
try
{
isLoggedIn = connectToServer(Path, username, password);
}
catch (ExceptionType1 ex1)
{
//Recover from this exception type.
}
catch (ExceptionType2 ex2)
{
//Recover from this exception type.
}
Исключения не являются "заменой" для операторов if.Они предназначены для обработки состояний ошибок, если таковые возникают, и их использование для контроля потока приложения, безусловно, не рекомендуется.По крайней мере, они медленные, и использование их для управления потоком может скрыть от вас реальные реальные ошибки, когда вы действительно хотите, чтобы приложение не работало.
РЕДАКТИРОВАТЬ: как @Anthony Pegram упоминает в комментарии ниже,Работа со всеми типами исключений в одном блоке перехвата - плохая практика (в этом я слишком часто бываю виновата), поскольку она также скрывает от вас исключения, которые вы, возможно, захотите обработать специально.