C#.NET — True or False: Any class whose instances are thrown using throw must derive (directly or indirectly) from System.Exception.

Difficulty: Easy

Correct Answer: True

Explanation:


Introduction / Context:
C# enforces a strong exception type system: the operand of throw must be an instance of System.Exception or a type derived from it. This unifies error handling across the CLR and tooling.



Given Data / Assumptions:

  • Throwing is done with the throw statement.
  • We refer to managed code (C# on the CLR).


Concept / Approach:
All exceptions in C# are System.Exception-based. You define custom exceptions by deriving from System.Exception (typically adding constructors and optional extra data). This design enables consistent catching (catch (Exception)) and consistent metadata (Message, StackTrace, InnerException, etc.).



Step-by-Step Solution:

Declare a custom exception: class MyProblem : Exception { public MyProblem(string msg) : base(msg) {} } Throw it: throw new MyProblem("details"); Catch it polymorphically: catch (MyProblem) { … } or catch (Exception) { … }


Verification / Alternative check:
Attempt to throw a non-Exception type (e.g., throw 5;). The compiler reports an error: the thrown object must be Exception-derived.



Why Other Options Are Wrong:
They add conditions that do not exist (checked contexts, app-domain crossings, framework types vs custom types).



Common Pitfalls:
Choosing ApplicationException as a base by default (not recommended); prefer deriving directly from Exception unless a framework guideline requires otherwise.



Final Answer:
True

More Questions from Exception Handling

Discussion & Comments

No comments yet. Be the first to comment!
Join Discussion