• CodexArcanum@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    6
    ·
    2 days ago

    Wildly, in C# you can do either and it has different results. I believe a bare throw doesn’t append to the stack trace, it keeps the original trace intact, while throw e updates the stack trace (stored on the exception object) with the catch and rethrow.

    In C#, you can only throw objects whose class derives from Exception.

    • Hoimo@ani.social
      link
      fedilink
      arrow-up
      1
      ·
      2 days ago

      You can do either, but you usually do neither. The best way is to throw a new exception for your situation and add the caught exception as an inner exception. Because rethrowing resets the stack trace, removing the context from an exception message that is often pretty vague, and “bouncing” with throw; doesn’t tell the next exception handler that you already handled (part of) the exception.