C#: Exception Message

Gast #4767834
Lesenswert?

Guten Morgen,

die Klasse MyExceptionMessage soll die komplette Exception Message 
ausgeben können. Wie müsste ich die Klasse erweitern, damit der String 
msg ausgegeben werden kann. Im Konstruktor kann der string ja nicht 
ausgeben werden.
1
    class MyExeptionMessage
2
    {
3
        public MyExeptionMessage(Exception exception)
4
        {
5
            Exception x = exception.InnerException;
6
            System.Text.StringBuilder msg = new StringBuilder(exception.Message);
7
            while (x != null)
8
            {
9
                msg.AppendFormat("\r\n\r\n{0}", x.Message);
10
                x = x.InnerException;
11
            }
12
            msg.Append("\r\n----Stacktrace----\r\n");
13
            msg.Append(exception.StackTrace);
14
        }
15
    }
Gast #4767840
Lesenswert?

Moin,

warum eine Klasse, die eine Exception beinhaltet. Üblicherweise Erbt man 
von Exception und überlädt die Ctor. Da kannst du dann in deine Message 
reinschreiben,was du willst. Der Vorteil ist, du kannst mit Throw deine 
Exception werfen und mit Catch auch direkt fangen.



Um deine Frage zu beantworden. Überschreibe ToString().
Gast #4767889
Lesenswert?

User schrieb:
>>>Üblicherweise Erbt man von Exception und überlädt die Ctor.
>
> Wie funktioniert dies?

Ohje, ein Anfänger :)

So sieht erst mal eine abgeleitete Exception aus.
1
[Serializable]
2
public class meineException: Exception {
3
     public meineException() : base() {}
4
     public meineException(string message) : base(message) {}
5
     public meineException(string message, Exception inner) : base(message, inner) {}
6
     public meineException(SerializationInfo info, StreamingContext context ):base(info, context){}
7
    }

da kannst du dann in deinem Code so was treiben:
1
public static void foo(){
2
     try{
3
          if (!tuwas())
4
              throw new meineException("1 und 1 macht 4");
5
     }
6
     catch(meineException e){
7
          Console.WriteLine(e.ToString()); 
8
     }
9
}

Beachte an der Stelle macht .ToString() genau das, was du da oben in 
deinem Code machst. Es Schmeißt die kompletten Daten einer Exception in 
einen String rein.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren