Так что я проектирую веб-службу и, конечно же; Мне нужно это Служба для автоматической записи в База данных. Это довольно прямолинейно; но, очевидно, Sql имеет тенденцию не играть хорошо.Захват базы данных Исключения
Который в значительной степени создает кошмар при устранении неполадок, не говоря уже через веб-службу . сделает его еще более кошмарным для отладки.
Поэтому я проверил в интернете и наткнулся на статью о переполнении стека, говорившему о SqlHelper класса, который по существу был массивный список этих:
public static bool IsDuplicateId(SqlException sex)
{
return (sex.Number == 2601);
}
Так что реализация будет утомительно, как вы 'd необходимо вызвать все эти Методы. Тем не менее, кто-то ответил:
switch (e.Number)
case 2601:
// Do Something
break;
default:
throw;
Так что я подумал, почему бы не создать класса обрабатывать большинство из этих возможных ошибок. С этой конкретной реализацией в виде:
public class SqlExceptionHelper
{
public SqlExceptionHelper(SqlException sqlException)
{
// Do Nothing.
}
public static string GetSqlDescription(SqlException sqlException)
{
switch (sqlException.Number)
{
case 21:
return "Fatal Error Occurred: Error Code 21.";
case 53:
return "Error in Establishing a Database Connection: 53.";
default
return ("Unexpected Error: " + sqlException.Message.ToString());
}
}
}
Так мой мыслительный процесс у меня есть класса, которые могут быть повторно использованы, чтобы обнаружить некоторые общие ошибки; и в других классах я просто using SomeNamespace.ExceptionHelpers;
я мог бы реализовать что-то вроде этого:
public class SiteHandler : ISiteHandler
{
public string InsertDataToDatabase(Handler siteInfo)
{
try
{
// Open Database Connection, Run Commands, Some additional Checks.
}
catch(SqlException exception)
{
SqlExceptionHelper errorCompare = new SqlExceptionHelper(exception);
return errorCompare.ToString();
}
}
}
Так по существу он должен обрабатывать все эти прекрасные исключения; но я начал думать, что плохо. Возвращает такие Исключения, как возвращение хорошо? Может ли это быть плохим? Или это действительно лучший способ справиться с подобным исключением из-за службы?
Так что мой вопрос сводится к:
Is this the best way to handle error catching through a Service?
Спасибо за помощь.
Если ваша служба возвращает строку для хорошего значения и строку для сообщения об исключении, ваш клиент будет иметь кошмар для решения на своей стороне. – Steve
Также есть вопрос, похожий на ваш здесь http://stackoverflow.com/ Вопросы/856993/правильная уловка из-за-исключения-через-web-сервис? rq = 1 – Steve
@Steve Мои навыки Google, похоже, сосут, поскольку я не видел эту статью. Мои извинения. – Greg