Hi!
Ich schreibe grade Tests, und stiess auf folgendes Mysterium:
Wenn ich in Zeile #19 das DebuggerStepThrough-Attribut setze, failt der trycatch(#7 - #12), und stattdessen gibts den Standard-Fehler-Codestop.
Es hat auch damit zu tun, dass ich das Werfen des Fehlers in die statische Methode delegiere.
Aber iwie irre, dass
Könnt ihr das Verhalten reproduzieren?
Ah - das ist doch typischer Fall für eine Umfrage
Ich schreibe grade Tests, und stiess auf folgendes Mysterium:
C#-Quellcode
- public class tstDebuggerStepThrough {
- public void DebuggerStepThroughTest() {
- var converter = new DelegateContainer();
- converter.Delegate = o => int.Parse((string)o);
- var result = converter.Convert("9"); // konvertiere "9" -> 9
- try {
- result = converter.Convert(9); // InvalidCastException provozieren
- }
- catch (Exception x) {
- MessageBox.Show(x.GetType().Name);
- }
- }
- } // end class tstDebuggerStepThrough
- class DelegateContainer {
- public Func<object, object> Delegate;
- //[System.Diagnostics.DebuggerStepThrough()] // Throwing failt, wenn dieses gesetzt
- public object Convert(object o) {
- try { return Delegate(o); }
- catch (Exception x) { return HandleException(x); }
- }
- public static object HandleException(Exception ex) {
- // im Designmode nicht werfen, sondern Fehlertext returnen
- throw ex;
- }
- } // end class DelegateContainer
Es hat auch damit zu tun, dass ich das Werfen des Fehlers in die statische Methode delegiere.
Aber iwie irre, dass
[DebuggerStepThrough]
den TryCatch ausser Kraft setzt Könnt ihr das Verhalten reproduzieren?
Ah - das ist doch typischer Fall für eine Umfrage
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()