Difficulty: Easy
Correct Answer: CLR
Explanation:
Introduction / Context:
Unhandled exceptions must be dealt with by the execution environment. In .NET, the Common Language Runtime (CLR) manages exception propagation and process termination when your code does not handle a fault.
Given Data / Assumptions:
Concept / Approach:
The CLR implements exception handling. If an exception bubbles through all frames without being caught, the CLR treats it as unhandled: it may log, show an error dialog (desktop apps), write to stderr (console apps), and terminate the process. The compiler does not run programs, and there is no “linker” phase at runtime for managed code. The operating system ultimately terminates the process at the CLR’s request, but within .NET the responsible component is the CLR.
Step-by-Step Solution:
Verification / Alternative check:
Run a console app that divides by zero without a catch; note the CLR-generated message and process exit code.
Why Other Options Are Wrong:
Compiler/linker/loader are build or startup components. The OS is below .NET and acts at CLR's direction, but in .NET terms, the CLR is the catcher.
Common Pitfalls:
Confusing design-time errors (compiler) with runtime behavior (CLR).
Final Answer:
CLR
Discussion & Comments