我需要为我的应用程序抛出的异常添加本地化,因为很多都是 ApplicationExceptions 并处理并记录到错误报告中。理想情况下,我想创建一个新的异常,继承自 ApplicationException,我可以将资源键和参数传递给它,以便可以从资源信息中构建异常消息。不幸的是(我认为)在异常中设置消息的唯一方法是在 New()...
我想要类似的东西:
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() 作为第一行 Message 是 ReadOnly
有人对如何将本地化字符串放入异常处理程序有任何建议吗?我将在一些不同的异常中需要它,尽管可以采用获取本地化字符串并创建异常的异常创建函数的方式,尽管堆栈信息将是错误的。我也不希望在 Throw 之前的主体内容过多,因为它显然开始影响流程的可读性。