Я использую asp.net, и я всегда борюсь за аккуратный способ обработки ошибок и, если они есть, передачи сообщения об ошибках пользователю. Например, у меня есть класс User, класс UserManager и класс Database. Imagina Я хочу показать всем пользователям, показать, что я вызываю метод GetAllUsers из UserManager, который возвращает список объектов User. Этот метод создает объект базы данных и вызывает метод ExecuteQuery (строковый запрос).
EDIT:
А теперь моя проблема, представьте, что что-то идет не так в методе ExecuteQuery () (не удалось открыть базу данных). Я хочу уведомить пользователя, что что-то пошло не так при открытии соединения с базой данных. Как я должен сделать это и обращаться с этим аккуратно?
РЕДАКТИРОВАТЬ 2:
Не могли бы вы сделать что-то вроде этого? Или иным образом?
public class Database()
{
private string _Error;
// property error (only get)
private void Open()
{
try
{
// Open DB
// Fails because of error
}
catch(Exception ex)
{
_Error = ex.Message;
}
}
public DataSet ExecuteQuery(string query)
{
try
{
Open();
// Execute query
// return dataset
}
catch(Exception ex)
{
_Error = ex.Message;
return null;
}
}
}
public class UserManager ()
{
private string _Error;
// Get property for Error
public List<User> GetAllUsers ()
{
Database db = new Database()
Dataset DS = db.ExecuteQuery("my query goes here");
(if DS == null)
{
_Error = db.Error;
return null;
}
}
}
В пользовательском интерфейсе при событии щелчка:
protected void onClick_event(args)
{
Usermanager userman = new UserManager();
List<User> users = userman.GetAllUsers();
if(users == null)
{
// make a error panel visible
pnlError.Visible = true;
lblError.Text = userman.Error
}
}
Это хороший подход?