Я новый разработчик ASP.net, и я пытаюсь добавить правильную обработку исключений в свое простое трехуровневое веб-приложение. Следуя этому сообщению, я сделал, например, следующее в Уровень доступа к данным (DAL) и пользовательский интерфейс (UI):
ДАЛ:
public IEnumerable<Survey> getData()
{
List<Survey> surveysList = new List<Survey>();
try
{
using (ItemsDBEntities context = new ItemsDBEntities())
{
surveysList = (from survey in context.Surveys
select new Survey()
{
ID = survey.ID,
startDate = survey.StartDate,
EndDate = survey.EndDate,
Description = survey.Description
}).ToList();
}
}
catch (EntityException ex)
{
//something wrong about entity
throw new ConnectionFailedException(ex);
}
catch (Exception ex)
{
//Don't know what happend...
}
return surveysList;
}
Код пользовательского интерфейса:
private void bindGrid()
{
Survey survey = new Survey();
try
{
GridView1.DataSource = survey.getData();
GridView1.DataBind();
GridView1.Visible = true;
}
catch (ConnectionFailedException)
{
Label1.Text = "There was a problem accessing the database, please try again.";
}
}
Тем не менее, я все еще получаю красную линию под
ConnectionFailedException
на каждом уровне, и я не знаю почему, и это дало мне следующую ошибку:
Тип или имя пространства имен «ConnectionFailedException» не найдено (вам не хватает директивы using или ссылки на сборку?) TestWebsite\App_Code\DAL\Survey.cs
Как я могу это исправить? Я не хочу создавать класс для каждого типа исключения, которое я собираюсь генерировать, как это было сделано до сих пор. Не могли бы вы предоставить мне помощь и пример, если это возможно?
ConnectionFailedException
, упоминается в вашем проекте? Если да, то есть ли у вас соответствующие директивыusing
? Кроме того, примечание об исключениях: не перехватывайте исключение и ничего не делайте (например, пустой блок перехвата). Если вы не можете обработать исключение, пусть оно всплывает, пока что-то, что может его обработать, не перехватит его. - person Daniel Mann   schedule 02.02.2014