2012-01-29 3 views
0

Я слышал, что нецелесообразно выбрасывать исключения из свойств getters, и я понимаю причины этого обоснования. Однако следующая ситуация озадачивает меня: Представьте, что вы пишете фасад означало адаптироваться к нескольким различным платформам:Throwing NotSupportedException from Property Getters

public interface IFacade 
{ 
    int SomeProperty { get; set; } 
} 

Теперь представьте эту платформу X и Y поддержку SomeProperty изначально, но эта платформа Z не делает. Не следует ли выбрасывать NotSupportedException с геттера в платформу. Z. Адаптер - это правильный способ сообщить пользователям, что функциональность не поддерживается в конкретном случае этой платформы?

+1

Это прекрасно. Учитывая, что это интерфейс, вы хотите сначала сказать программисту. –

ответ

1

Пока это задокументировано, в этом нет ничего плохого. Если вас беспокоит необходимость обработки исключения, вы можете ввести SupportsSomeProperty. Однако это может взорвать интерфейс.

1

Поскольку вы знаете, что исключение нельзя поймать (вы ничего не можете с этим поделать, платформа не поддерживается!) Или обрабатывается, если он пойман, было бы лучше выйти из программы и отобразить сообщение о том, что текущая платформа не поддерживается.

Исключения обычно используются в местах, где их можно поймать и обработать, или они неожиданно выбрасываются в случае ошибки. Если вы поймаете ошибку, запущенную на платформе z, выйдите из программы, если она не может быть продолжена.

 Смежные вопросы

  • Нет связанных вопросов^_^