Я действительно работаю над разработкой Framework, а это означает, что вам нужна действительно сильная методология кодирования.
У меня возникла проблема, когда я не знаю, какой класс, порожденный System.Exception, мне нужно бросить. В основном это случай, когда у меня есть класс с полями, которые могут быть optionnaly инициализированы конструктором и которые имеют методы, использующие эти поля. Какое исключение я должен выполнить, если пользователь не инициализировал эти поля? (что означает, что они равны нулю)
Вот пример:
public class MyConnection
{
private Uri endpointUri;
public Uri EndpointUri
{
get
{
return this.endpointUri;
}
set
{
this.endpointUri = value;
}
}
public MyConnection()
{
}
public MyConnection(Uri endpointUri)
{
this.endpointUri = endpointUri;
}
public FileStream GetFile()
{
if (this.endpointUri != null)
{
// My doer methods
}
else
{
throw new TheExceptionINeedToThrow("endpointUri", ...);
}
}
}
Обратите внимание, что я читал целую главу "Руководство по дизайну рамок" в отношении обработки и метаданных исключений и что я не нашел подходящего решения этот точный случай. Или, может быть, я что-то не понял...
Спасибо за вашу помощь.
EDIT: факт, что я предоставляю пустой конструктор, кажется немного запутанным в отношении моей проблемы, но он полностью добровольный. В некоторых объектах, которые должны соответствовать диапазону различных состояний, которые не могут быть дублированы в нескольких объектах, иногда полезно.