Die kurze Antwort ist: NEIN.
System.Exception Die Eigenschaften sind in when it is thrown gefüllt:
Standardmäßig wird die Stapelüberwachung erfasst, unmittelbar bevor ein Objekt Ausnahme ausgelöst. Verwenden Sie Environment.StackTrace, um Stack-Trace-Informationen zu erhalten, wenn keine Ausnahme ausgelöst wird.
Also, wenn Sie wirklich ein exception
Objekt in dem Zustand, müssen sie nach geworfen wird, haben Sie keine andere gute Möglichkeit, aber es zu werfen und zu fangen.
Immer noch nicht die Hauptfrage fallen lassen: Brauchen Sie wirklich das Ausnahmeobjekt?
Wenn Sie eine Methode haben, die System.Exception
als Eingabeparameter hat und Sie brauchen einen Stacktrace im Inneren, denken Sie an diese möglichen Lösungen:
- -Methodenüberladung mit einem optionalen Stacktrace Eingangsparameter.
- Ein Nachfolger von System.Exception mit einer versteckten StackTrace-Eigenschaft, die den StackTrace speichert, wenn das Objekt erstellt und nicht ausgelöst wird.
Als letztes Mittel Sie eine Erweiterungsmethode für die System.Exception Klasse machen könnte, die "auffüllt" eine Instanz der System.Exception:
private void MyCode()
{
Exception exe = new Exception("Blah");
exe.Populate();
DoSomeWork(exe);
}
public static void Populate(this System.Exception source)
{
try
{
throw source;
}
catch
{
}
}
'var myExceptionIDontWantToThrow = new Exception (" Blah ");' – Phylogenesis
Was meinst du mit "besser"? Was meinst du mit "richtig eingestellt wie wenn geworfen"? Was ist dein Endziel? – CodeCaster
Was meinst du mit richtig eingestellt? Was ist Ihre erwartete Leistung? – solarc