File size: 14,938 Bytes
5ab8a9f |
1 |
{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"collapsed_sections":["tuzVCTQ6-pw-","sQJBFosTmIa0","mbU_i0zXtXBx"],"authorship_tag":"ABX9TyO+nZ2yFkRYNTB3js2EaME/"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["# `Error Handling`"],"metadata":{"id":"F2lhKLJy6pdh"}},{"cell_type":"markdown","source":["# **Exceptions and error handling (try, except)**"],"metadata":{"id":"tuzVCTQ6-pw-"}},{"cell_type":"code","execution_count":null,"metadata":{"id":"D2MjmdES-R1G"},"outputs":[],"source":["def func():\n"," try:\n"," print('No error occurred')\n"," # return True\n"," except Exception as e:\n"," print(f\"An error occurred: {e}\")\n"," # return False\n"," else:\n"," print(\"Operation successful!\")\n"," finally:\n"," print(\"Cleaning up resources.\")"]},{"cell_type":"code","source":["func()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"5l2vr2NZIzPI","executionInfo":{"status":"ok","timestamp":1735210423749,"user_tz":-360,"elapsed":1515,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"64d51f60-0065-49c0-fbde-9a6975bd6a26"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["No error occurred\n","Operation successful!\n","Cleaning up resources.\n"]}]},{"cell_type":"code","source":["# Handling a Specific Exception\n","try:\n"," result = 10 / 0\n","except ZeroDivisionError as e:\n"," print(f\"Error: {e}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ugaUdSE9KKha","executionInfo":{"status":"ok","timestamp":1735210423749,"user_tz":-360,"elapsed":4,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"7faa121f-d6ad-4ed2-cb88-db9fbc54d732"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Error: division by zero\n"]}]},{"cell_type":"code","source":["# Handling Multiple Exceptions\n","try:\n"," num = int(input(\"Enter a number: \"))\n"," result = 10 / num\n","except ValueError:\n"," print(\"Invalid input! Please enter a number.\")\n","except ZeroDivisionError:\n"," print(\"You can't divide by zero.\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"7_ujgXYXMrU1","executionInfo":{"status":"ok","timestamp":1735210450030,"user_tz":-360,"elapsed":26284,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"1422df68-46f1-40c0-e569-153525094e74"},"execution_count":null,"outputs":[{"name":"stdout","output_type":"stream","text":["Enter a number: 7\n"]}]},{"cell_type":"code","source":["# General Exception Handling\n","try:\n"," risky_operation()\n","except Exception as e:\n"," print(f\"An error occurred: {e}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"bTXSbSYNM3UQ","executionInfo":{"status":"ok","timestamp":1735210450031,"user_tz":-360,"elapsed":8,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"b7d6ef6d-cc08-4028-c556-1938e06e143e"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["An error occurred: name 'risky_operation' is not defined\n"]}]},{"cell_type":"code","source":["# Using else and finally\n","try:\n"," num = int(input(\"Enter a number: \"))\n"," result = 10 / num\n","except Exception as e:\n"," print(f\"An error occurred: {e}\")\n","else:\n"," print(f\"Result is {result}\")\n","finally:\n"," print(\"Execution complete.\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"mrvMZdhLNEaC","executionInfo":{"status":"ok","timestamp":1735210455467,"user_tz":-360,"elapsed":5439,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"68efc08e-603b-4f5f-cb83-503b23a4b937"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Enter a number: 7\n","Result is 1.4285714285714286\n","Execution complete.\n"]}]},{"cell_type":"code","source":["# Raising Exceptions\n","try:\n"," age = int(input(\"Enter your age: \"))\n"," if age < 0:\n"," raise Exception(\"Age cannot be negative\")\n","\n"," if age > 99:\n"," raise Exception(\"Age cannot be above 99\")\n"," else:\n"," print(\"Age is valid\")\n","except Exception as e:\n"," print(f\"Error: {e}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"k-42e-xINfyJ","executionInfo":{"status":"ok","timestamp":1735210460773,"user_tz":-360,"elapsed":5311,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"82573081-f07b-4dd7-fbac-57c2e00226fb"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Enter your age: 8\n","Age is valid\n"]}]},{"cell_type":"code","source":["# File Handling with Exceptions\n","try:\n"," with open(\"nonexistent.txt\", \"r\") as file:\n"," data = file.read()\n","except FileNotFoundError:\n"," print(\"File not found! Please check the file name.\")\n","else:\n"," print(\"File content:\")\n"," print(data)\n","finally:\n"," print(\"Execution complete.\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UZitfeWvPe5g","executionInfo":{"status":"ok","timestamp":1735210460773,"user_tz":-360,"elapsed":4,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"9cf772ee-8a9c-42db-eb9a-496bd24957ce"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["File not found! Please check the file name.\n","Execution complete.\n"]}]},{"cell_type":"markdown","source":["# **Raising exceptions**"],"metadata":{"id":"sQJBFosTmIa0"}},{"cell_type":"code","source":["# Raising a Built-in Exception\n","age = int(input(\"Enter your age: \"))\n","if age < 0:\n"," raise ValueError(\"Age cannot be negative!\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ZuZ9KmjYmKuT","executionInfo":{"status":"ok","timestamp":1735212155350,"user_tz":-360,"elapsed":2924,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"a35156d2-7358-469e-a406-900e274584a5"},"execution_count":null,"outputs":[{"name":"stdout","output_type":"stream","text":["Enter your age: 7\n"]}]},{"cell_type":"code","source":["# Raising Exceptions in Functions\n","def divide(a, b):\n"," if b == 0:\n"," raise ZeroDivisionError(\"Division by zero is not allowed.\")\n"," return a / b\n","\n","try:\n"," result = divide(10, 0)\n","except ZeroDivisionError as e:\n"," print(f\"Error: {e}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"kYUGZlQMndMA","executionInfo":{"status":"ok","timestamp":1735211076611,"user_tz":-360,"elapsed":362,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"0235bacc-55ce-4539-a919-cf4e2a0f1e83"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Error: Division by zero is not allowed.\n"]}]},{"cell_type":"code","source":["# Re-raising Exceptions\n","def risky_function():\n"," try:\n"," raise ValueError(\"Something went wrong!\")\n"," except ValueError as e:\n"," print(\"Handling error locally, but re-raising it.\")\n"," raise # Re-raises the caught exception\n","\n","try:\n"," risky_function()\n","except ValueError as e:\n"," print(f\"Caught re-raised exception: {e}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"aIJzD3ZTnmQp","executionInfo":{"status":"ok","timestamp":1735211096817,"user_tz":-360,"elapsed":373,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"0906f480-40e8-4655-e583-b39e34387ca0"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Handling error locally, but re-raising it.\n","Caught re-raised exception: Something went wrong!\n"]}]},{"cell_type":"code","source":[],"metadata":{"id":"vA9uSr2upgfH"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# **Basic Usage of Built-in Exceptions**"],"metadata":{"id":"mbU_i0zXtXBx"}},{"cell_type":"code","source":["# ZeroDivisionError\n","try:\n"," result = 10 / 0\n","except ZeroDivisionError as e:\n"," print(f\"Error: {e}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"N-GhAiPBtZfq","executionInfo":{"status":"ok","timestamp":1735212262808,"user_tz":-360,"elapsed":347,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"1de6c2d1-b89d-4317-a64c-64becdcf3c50"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Error: division by zero\n"]}]},{"cell_type":"code","source":["# File Handling Exceptions\n","try:\n"," with open(\"nonexistent_file.txt\", \"r\") as file:\n"," content = file.read()\n","except FileNotFoundError as e:\n"," print(f\"Error: {e}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"c-4Kzy5ntfxy","executionInfo":{"status":"ok","timestamp":1735212312079,"user_tz":-360,"elapsed":350,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"ab063071-2379-4a8a-a00b-e8574785f9c4"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Error: [Errno 2] No such file or directory: 'nonexistent_file.txt'\n"]}]},{"cell_type":"code","source":["# Value-Related Exceptions\n","try:\n"," num = int(\"not_a_number\")\n","except ValueError as e:\n"," print(f\"Error: {e}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"NNskjsFptqxk","executionInfo":{"status":"ok","timestamp":1735212340862,"user_tz":-360,"elapsed":544,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"716797ea-4627-4db2-e696-486b7190c941"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Error: invalid literal for int() with base 10: 'not_a_number'\n"]}]},{"cell_type":"code","source":["# Type-Related Exceptions\n","try:\n"," result = \"5\" + 5\n","except TypeError as e:\n"," print(f\"Error: {e}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"k4SlwWBotvYV","executionInfo":{"status":"ok","timestamp":1735212365294,"user_tz":-360,"elapsed":343,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"d70ca400-fe29-4dae-f78c-5bda296dfda6"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Error: can only concatenate str (not \"int\") to str\n"]}]},{"cell_type":"code","source":["# Index or Key-Related Exceptions\n","try:\n"," my_list = [1, 2, 3]\n"," print(my_list[5])\n","except IndexError as e:\n"," print(f\"Error: {e}\")\n","\n","try:\n"," my_dict = {\"a\": 1}\n"," print(my_dict[\"b\"])\n","except KeyError as e:\n"," print(f\"Error: {e}\")\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"pCcTr5JJt3I-","executionInfo":{"status":"ok","timestamp":1735212412174,"user_tz":-360,"elapsed":350,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"f41904d6-21c5-4c60-a01b-e2e415667c3f"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Error: list index out of range\n","Error: 'b'\n"]}]},{"cell_type":"code","source":["# Import-Related Exceptions\n","try:\n"," import nonexistent_module\n","except ImportError as e:\n"," print(f\"Error: {e}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"pSltwyuEuEeX","executionInfo":{"status":"ok","timestamp":1735212435539,"user_tz":-360,"elapsed":366,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"eed4b34a-7db7-4a72-c39f-df8f85883447"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Error: No module named 'nonexistent_module'\n"]}]},{"cell_type":"code","source":["# Attribute Access Exceptions\n","try:\n"," my_list = [1, 2, 3]\n"," my_list.append_new_item(4)\n","except AttributeError as e:\n"," print(f\"Error: {e}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"5nF7VQCvuIR4","executionInfo":{"status":"ok","timestamp":1735212461881,"user_tz":-360,"elapsed":334,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"fd5823f3-955f-4a1c-c686-07faf6a42f14"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Error: 'list' object has no attribute 'append_new_item'\n"]}]},{"cell_type":"code","source":["# Iteration Exceptions\n","try:\n"," iterator = iter([1, 2, 3])\n"," print(next(iterator))\n"," print(next(iterator))\n"," print(next(iterator))\n"," print(next(iterator)) # This raises StopIteration\n","except StopIteration as e:\n"," print(\"Iteration has stopped.\")\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"DFDxXM34uOuZ","executionInfo":{"status":"ok","timestamp":1735212477729,"user_tz":-360,"elapsed":374,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"71083551-1845-4b13-e636-e3677cd29e5d"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["1\n","2\n","3\n","Iteration has stopped.\n"]}]},{"cell_type":"code","source":["# Customizing Exception Handling\n","try:\n"," value = int(\"not_a_number\")\n","except (ValueError, TypeError) as e:\n"," print(f\"Error: {e}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"H8LMBjeBuSlZ","executionInfo":{"status":"ok","timestamp":1735212562381,"user_tz":-360,"elapsed":335,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"8a546777-a79c-4c36-d2ea-4a2eeaffd1e2"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Error: invalid literal for int() with base 10: 'not_a_number'\n"]}]},{"cell_type":"code","source":["# Custom Exceptions\n","class CustomError(Exception):\n"," pass\n","\n","try:\n"," raise CustomError(\"This is a custom error!\")\n","except CustomError as e:\n"," print(f\"Error: {e}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"T0-Bh7XcuhY7","executionInfo":{"status":"ok","timestamp":1735212580976,"user_tz":-360,"elapsed":359,"user":{"displayName":"44-271-Munsi Walid Al Hassan Nizhu","userId":"16216461530557409787"}},"outputId":"b5c76525-982e-4513-a3d3-c86a0af70602"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Error: This is a custom error!\n"]}]}]} |