Afficher Personnalisé Message D'Exception
J'essaie de montrer une exception personnalisée message tout en préservant l'exception interne.
Voici mon exemple de code:
public class Class1
{
public Class1()
{
try
{
throw new WebException("Initial Exception");
}
catch (WebException we)
{
throw new myException("Custom Message", we);
}
}
}
public class myException : WebException
{
public myException(string msg, WebException e) : base(msg, e) { }
}
Lorsque j'exécute ce code, il m'indique le message personnalisé dans le débogueur:
mais envoie toujours le innerexception message au client:
Ce que je fais mal ici? Comment faire pour préserver l'exception interne tout en montrant mon propre message personnalisé?
- Notez qu'il est toujours à l'affiche personnalisé de votre myException de l'information. Je devine que c'est une "fonctionnalité" de ASP.NET s'serveur qui montre l'intérieur de l'exception d'abord les données de la source de l'origine de ce problème. J'imagine, peut-être, que ce soit pour la commodité du côté serveur de débogage. Éventuellement il y a un serveur option de configuration pour contrôler cela, mais je ne sais pas.
- "Vous ne devez pas définir de nouvelles classes d'exception dérivé de ApplicationException; Exception pour l'utilisation à la place. En outre, vous ne devez pas écrire du code qui attire ApplicationException." - Microsoft
- Aussi, je pense que vous pouvez peut-être vouloir
throw;
plutôt quethrow e;
commeException
catch
gestionnaire - ça va préserver la pile des informations, tout ce que vous avez ne sera pas. - Je suis juste en utilisant ce code une un exemple, je n'ai pas de chance avec
throw;
parce que je veux préserver l'exception initiale
Vous devez vous connecter pour publier un commentaire.
La façon de personnaliser le message que l'utilisateur voit, c'est de fournir une page d'erreur personnalisée.
http://support.microsoft.com/kb/306355
Je soupçonne que c'est parce que le ApplicationException n'est pas traitée efficacement et le bloc catch déclenche une exception qui est ensuite ramassé comme une base d'Exception. Le débogueur est ensuite la liste des exceptions.
Je pense que cela va donner sur le comportement que vous êtes après (je l'ai écrit comme une application console)