Бросая NotSupportedException от Получателей Собственности - PullRequest
0 голосов
/ 29 января 2012

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

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

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

Ответы [ 2 ]

1 голос
/ 29 января 2012

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

1 голос
/ 29 января 2012

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

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

...