У меня быстрый вопрос, который, надеюсь, кто-то проработал раньше. В системе, над которой я сейчас работаю, мы развернули наш собственный пользовательский поставщик для обработки веб-исключений. В этом провайдере мне нравится то, что он позволяет нам добавлять значения параметров метода, который вызывает исключение. Код выглядит примерно так.
Public Sub Dosomething(ByVal Parameter1 As String, ByVal Parameter2 As String)
Try
'Do some process that causes and error.
Catch ex As Exception
Dim ErrorDetails = New List(Of String)
ErrorDetails.Add("Parameter Values:")
ErrorDetails.Add(String.Format("Parameter 1: {0}", Parameter1))
ErrorDetails.Add(String.Format("Parameter 2: {0}", Parameter2))
RaiseNewCustomException(ex, ErrorDetails)
End Try
End Sub
В случае этого метода захват параметров и их значений очень ручной и подвержен ошибкам, так как все больше и больше людей касаются базы кода и забывают обновить выданную ошибку. Есть ли способ решить эту проблему более автоматизированным / менее подверженным ошибкам способом?
Я играл с отражением, но я не думаю, что вы можете определить значения параметров с помощью отражения. Я хотел бы что-то вроде:
Public Sub Dosomething(ByVal Parameter1 As String, ByVal Parameter2 As String)
Try
'Do some process that causes and error.
Catch ex As Exception
RaiseNewCustomExceptionAndAutomaticallyGenerateParameterErrorString(ex, System.Reflection.MethodInfo.GetCurrentMethod())
End Try
End Sub