Je dois ajouter la localisation aux exceptions émises par mon application, car beaucoup sont des exceptions d'application et sont traitées et consignées dans un rapport d'erreurs. Idéalement je veux créer une nouvelle exception, imitant d'ApplicationException que je peux passer la clé de ressource aussi bien que des arguments, de sorte que le messsage d'exception puisse être construit à partir des informations de ressource. Malheureusement (je pense) la seule façon de régler le message dans une exception est dans le Nouveau() ...Suggestions pour localiser les exceptions
Je voudrais quelque chose comme:
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
Cependant, je ne peux avoir MyBase.New () en tant que première ligne Le message est ReadOnly
Est-ce que quelqu'un a des recommandations sur la façon d'obtenir des chaînes localisées dans le gestionnaire d'exceptions? J'en aurai besoin dans quelques exceptions différentes, bien que cela puisse aller dans le sens d'une fonction de création d'exception qui récupère la chaîne localisée et crée l'exception, bien que l'information de pile soit alors erronée. Je ne veux pas non plus trop dans le corps principal avant le Throw car il commence évidemment à empiéter sur la lisibilité du flux.