{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "ULxWGdhVqcRt" }, "source": [ "# Capítulo 8: Conteúdo Extra" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![ch8](ch8.jpeg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tratamento de erros (`try/except`)\n", "\n", "Em Python, usamos o bloco `try/except` para lidar com erros que podem ocorrer durante a execução do programa, evitando que ele seja interrompido inesperadamente.\n", "\n", "**Exemplo básico com `try/except`:**\n", "\n", "```python\n", "try:\n", " numero = int(input(\"Digite um número: \"))\n", " resultado = 10 / numero\n", " print(f\"O resultado é {resultado}.\")\n", "except ZeroDivisionError:\n", " print(\"Erro: divisão por zero.\")\n", "except ValueError:\n", " print(\"Erro: entrada inválida.\")\n", "```\n", "\n", "**Saída:**\n", "\n", "```\n", "Digite um número: 2\n", "O resultado é 5.0.\n", "```\n", "\n", "```\n", "Digite um número: 0\n", "Erro: divisão por zero.\n", "```\n", "\n", "```\n", "Digite um número: abc\n", "Erro: entrada inválida.\n", "```\n", "\n", "\n", "### Blocos `else` e `finally` no tratamento de erros\n", "\n", "Além do `try` e `except`, Python permite o uso opcional dos blocos `else` e `finally` para tornar o tratamento de erros mais completo.\n", "\n", "**`else`**\n", "\n", "Executado **somente se nenhum erro ocorrer** no bloco `try`.\n", "\n", "**`finally`**\n", "\n", "Executado **sempre**, com ou sem erro. É útil para liberar recursos, como fechar arquivos ou conexões com banco de dados.\n", "\n", "**Exemplo com `else` e `finally`:**\n", "\n", "```python\n", "try:\n", " numero = int(input(\"Digite um número: \"))\n", " resultado = 10 / numero\n", "except ZeroDivisionError:\n", " print(\"Erro: divisão por zero.\")\n", "except ValueError:\n", " print(\"Erro: entrada inválida.\")\n", "else:\n", " print(f\"O resultado é {resultado}.\")\n", "finally:\n", " print(\"Execução finalizada.\")\n", "```\n", "\n", "**Saída:**\n", "\n", "```\n", "Digite um número: 2\n", "O resultado é 5.0.\n", "Execução finalizada.\n", "```\n", "\n", "```\n", "Digite um número: 0\n", "Erro: divisão por zero.\n", "Execução finalizada.\n", "```\n", "\n", "```\n", "Digite um número: xyz\n", "Erro: entrada inválida.\n", "Execução finalizada.\n", "```\n", "\n", "\n", "### Usando `try/except` em funções\n", "\n", "É comum usar `try/except` dentro de funções para torná-las mais seguras e reutilizáveis.\n", "\n", "```python\n", "def dividir(a, b):\n", " try:\n", " return a / b\n", " except ZeroDivisionError:\n", " return \"Erro: divisão por zero.\"\n", "\n", "print(dividir(10, 2)) # Saída: 5.0\n", "print(dividir(10, 0)) # Saída: Erro: divisão por zero.\n", "```\n", "\n", "**Saída:**\n", "\n", "```\n", "5.0\n", "Erro: divisão por zero.\n", "```\n", "\n", "\n", "### Tabela com Resumo\n", "\n", "| Bloco | Quando é executado |\n", "| --------- | ------------------------------------------- |\n", "| `try` | Tenta executar um código que pode dar erro |\n", "| `except` | Executa se um erro ocorrer no `try` |\n", "| `else` | Executa se **nenhum erro** ocorrer no `try` |\n", "| `finally` | Sempre executa, com ou sem erro |\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "colab": { "provenance": [], "toc_visible": true }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.20" } }, "nbformat": 4, "nbformat_minor": 4 }