{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "c44b5e5e",
   "metadata": {},
   "source": [
    "# Chapter Review\n",
    "\n",
    "01. What is the difference between a **compile-time error** and a **runtime exception**?\n",
    "    Give an example of each.\n",
    "\n",
    "02. What are the three blocks in C# exception handling? Describe when each one executes.\n",
    "\n",
    "03. Why is it bad practice to catch `Exception` as the base type for all error handling?\n",
    "    What should you do instead?\n",
    "\n",
    "04. What happens if an exception is thrown inside a `finally` block?\n",
    "\n",
    "05. Write a short code snippet that reads a number from the user and handles the case\n",
    "    where the input is not a valid integer using `int.TryParse` rather than a try/catch.\n",
    "    When is `TryParse` preferable to exception handling?\n",
    "\n",
    "06. What is the difference between `throw` and `throw ex` when re-throwing an exception?\n",
    "    Which preserves the original stack trace?\n",
    "\n",
    "07. Describe the **Red-Green-Refactor** cycle in TDD. What does each color represent?\n",
    "\n",
    "08. What is the role of `[TestClass]` and `[TestMethod]` attributes in MSTest?\n",
    "\n",
    "09. In the `BasicMath` example, the `Multiply` method used `+` instead of `*`. Which\n",
    "    test caught the bug, and what did `Assert.AreEqual` report?\n",
    "\n",
    "10. What is the difference between a **unit test** and an **integration test**?"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
