Обработка ошибок в 3 многоуровневых архитектурах

Вы можете сделать это в случае события Worksheet_Change,

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row = 2 And Target.Column = 3 Then    'C2
        If Target.Value <> "" Then
            Range("C1").Value = Target.Value
        End If
    End If
End Sub

Формула =C2 или какой-либо вариант не сработает, поскольку не может запомнить значение, которое с тех пор было удалено. [ 117]


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

Private Sub Worksheet_Change(ByVal Target As Range)
    Static old As String

    If Target.Row = 2 And Target.Column = 3 Then    'C2
        If Target.Value <> "" Then
            Range("C1").Formula = "=IF(N(""""),"""","""")&C2"
            old = Target.Value
        Else
            Range("C1").Formula = "=IF(N(""" & old & """),"""","""")& """ & old & """"
        End If

    End If
End Sub

Это бессмысленно, потому что вам все равно нужен код.


Я полагаю, что даже для кода можно просто записать в именованный диапазон / значение, на которое ссылается формула:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Value <> "" Then
        ActiveWorkbook.Names.Add Name:="stored", RefersToR1C1:="=""" & Target.Value & """"
    End If
End Sub
6
задан sarsnake 7 April 2009 в 18:05
поделиться

6 ответов

Создайте собственный уровень исключений.

DALExceptionManager DuplicateException DatabaseException

BLLExceptionManager NotAuthorizedException InvalidDateException

На уровне презентации добавьте эти ссылки и создайте общий обработчик исключений. Таким образом, вы знаете, как работать с сообщениями об исключениях.

0
ответ дан 17 December 2019 в 00:14
поделиться

Необходимо проверить блок обработки исключений в Библиотеке Предприятия. Много хороших советов и codeware, окружающего переносящиеся исключения и передающего их между слоями.

4
ответ дан 17 December 2019 в 00:14
поделиться

Где Ваш бизнес-слой, и почему не это проверяющий Авторизацию и целостность? DAL является слишком низким уровнем для проверки тех правил - при ударе проблемы там это - в значительной степени время для выдачи исключения. Ваш бизнес-слой или контроллеры могут поймать то исключение и отобразить разумное сообщение - но это не что-то, что необходимо регулярно делать.

3
ответ дан 17 December 2019 в 00:14
поделиться

Одна опция, что я думал об использовании, создают Ошибочный класс, но затем я должен был бы передать его от UI до бизнес-слоя и тогдашнего к уровню доступа к данным ссылкой

Я не уверен, что понимаю это. Вы не должны передавать ошибочный объект в каждом слое. Например, в одном из Вашего примера, errors that inform the user that something like this already exists in the database (say name not unique - for example) , sql исключение могло быть выдано платформой, и просто необходимо поймать определенное исключение в бизнес-слое или уровне UI.

Блок обработки исключений библиотекой Enterprise, предложенной другими людьми, позволит Вам, определяют некоторую основанную на политике обработку исключений в Вашем web.config файле. Это могло быть хорошее место, если Вы хотите разработать некоторое корпоративное приложение. Но для простого приложения, Вы, возможно, должны не пойти настолько далеко.

0
ответ дан 17 December 2019 в 00:14
поделиться

То, что происходит на верхних уровнях, не до Вашего Уровня доступа к данным. Это не должно даже знать о том, что верхние уровни собираются сделать. Если у Вас есть дублирующаяся ключевая ошибка, то она должна бросить что-то как "DuplicateKeyException". Если необходимо поразить ошибку авторизации (я предполагаю, что Вы имеете в виду "исключение"), то ничего не делайте с ним - позволяют ему пузырь назад до уровня UI, который может отобразить соответствующую ошибочную страницу.

Помните, что ошибочные значения состояния и такие вещи являются причиной, мы изобрели исключения.

0
ответ дан 17 December 2019 в 00:14
поделиться

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

0
ответ дан 17 December 2019 в 00:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: