Описание ошибки будет естественно всплывать до уровня пользовательского интерфейса, откуда вы ее вызываете, поэтому вы можете отследить и обработать ошибку, отобразив там сообщение.Ниже приведен пример псевдокода, который может помочь объяснить, что я имею в виду:
namespace My.UiLayer
{
public class MyUiClass
{
try
{
BusinessLogicClass blc = new BusinessLogicClass();
blc.WriteCustomers(string filePath, IEnumerable<Customer> customers);
}
catch (IOException e)
{
// Read from 'e' and display description in your UI here
}
}
}
Обратите внимание, что вы можете изменить вышеприведенное, чтобы перехватывать все исключения с помощью Exception
, а не просто IOException
ввыше, в зависимости от того, что вы хотите отобразить пользователю
Если вам нужно конкретное сообщение из разных классов процедур, вы можете сделать что-то вроде следующего:
public void WriteCustomers(string filePath, IEnumerable<Customer> customers)
{
try
{
// Code
}
catch (IOException e)
{
throw new IOException("Error in write customers", ex);
}
}
public void WriteSomethingElse(string filePath, IEnumerable<Something> s)
{
try
{
// Code
}
catch (IOException e)
{
throw new IOException("Error in something else", ex);
}
}
И они будут перехвачены на уровне пользовательского интерфейса с указанным вами сообщением.Существует множество способов захвата / обработки ошибок, но ключевой момент заключается в том, что ошибка пройдет уровень вверх;вам не нужен объект передачи данных (DTO) для отправки этой информации.