Мне нужно добавить локализацию к исключениям, созданным моим приложением, так как многие являются ApplicationExceptions и обрабатываются и регистрируются в отчете об ошибке. В идеале я хочу создать новое исключение, наследующее от ApplicationException, что я могу передать ключ ресурса, а также аргументы, так что беспорядок может быть создан из информации о ресурсах. К сожалению (я думаю) единственный способ установить сообщение в виде исключения в Новом() ...Предложения по локализации исключений
Я хотел бы что-то вроде:
public class LocalizedException
Inherits ApplicationException
public Sub New(ResourceKey as string, arg0 as Object)
MyBase.New()
' get the localized text'
Dim ResMan as New Global.System.Resources.ResourceManager("AppName.ExceptionResources", _
System.Reflection.Assembly.GetExecutingAssembly)
Dim LocalText as string = ResMan.GetString(ResourceKey)
Dim ErrorText as String = ""
Try
Dim ErrorText = String.Format(LocalText, arg0)
Catch
ErrorText = LocalText + arg0.ToString() ' in case String.Format fails'
End Try
' cannot now set the exception message!'
End Sub
End Class
Однако я могу только иметь MyBase.New () в качестве первой строки Сообщение прочитаноОдно
Есть ли у кого-нибудь рекомендации относительно того, как получить локализованные строки в обработчик исключений? Я буду нуждаться в этом в нескольких разных исключениях, хотя мог бы пойти на путь функции исключения, которая получает локализованную строку и создает исключение, хотя тогда информация о стеке будет неправильной. Я также не хочу слишком много в основном корпусе перед тем, как бросать, поскольку он, очевидно, начинает падать на читаемость потока.