{"id":393,"date":"2024-12-15T19:39:10","date_gmt":"2024-12-15T19:39:10","guid":{"rendered":"https:\/\/equipomedios.com\/blog\/?p=393"},"modified":"2024-10-18T19:42:32","modified_gmt":"2024-10-18T19:42:32","slug":"excepciones-integradas-en-python","status":"publish","type":"post","link":"https:\/\/equipomedios.com\/blog\/excepciones-integradas-en-python\/","title":{"rendered":"Excepciones integradas en Python"},"content":{"rendered":"<h1>Excepciones integradas<\/h1>\n<p>Las excepciones pueden ser objetos de una clase u objetos cadena. Aunque la mayor\u00eda de las excepciones eran objetos cadena en las anteriores versiones de Python, en Python 1.5 y versiones posteriores, todas las excepciones est\u00e1ndar han sido convertidas en objetos de clase y se anima a los usuarios a que hagan lo propio. Las excepciones est\u00e1n definidas en el m\u00f3dulo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">exceptions<\/span><\/code>. Nunca es necesario importar este m\u00f3dulo expl\u00edcitamente, pues las excepciones vienen proporcionadas por el espacio nominal interno.<\/p>\n<p>Dos objetos de cadena distintos con el mismo valor se consideran diferentes excepciones. Esto es as\u00ed para forzar a los programadores a usar nombres de excepci\u00f3n en lugar de su valor textual al especificar gestores de excepciones. El valor de cadena de todas las excepciones internas es su nombre, pero no es un requisito para las\u00a0<span class=\"std std-ref\">excepciones definidas por el usuario<\/span>\u00a0u otras excepciones definidas por m\u00f3dulos de biblioteca.<\/p>\n<p>En el caso de las clases de excepci\u00f3n, en una sentencia\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">try<\/span><\/code>\u00a0con una sentencia\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">except<\/span><\/code>\u00a0que mencione una clase particular, esta sentencia tambi\u00e9n gestionar\u00e1 cualquier excepci\u00f3n derivada de dicha clase (pero no las clases de excepci\u00f3n de las que deriva ella). Dos clases de excepci\u00f3n no emparentadas mediante sub-clasificaci\u00f3n nunca son equivalentes, aunque tengan el mismo nombre.<\/p>\n<p>Las excepciones internas enumeradas a continuaci\u00f3n pueden ser generadas por el int\u00e9rprete o por funciones internas. Excepto en los casos mencionados, tienen un\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">valor<\/span>\u00a0<span class=\"pre\">asociado<\/span><\/code>\u00a0indicando en detalle la causa del error. Este valor puede ser una cadena o tupla de varios elementos informativos (es decir, un c\u00f3digo de error y una cadena que explica el c\u00f3digo). El valor asociado es el segundo argumento a la sentencia\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">raise<\/span><\/code>. En las cadenas de excepci\u00f3n, el propio valor asociado se almacenar\u00e1 en la variable nombrada como el segundo argumento de la sentencia\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">except<\/span><\/code>\u00a0(si la hay). En las clases de excepci\u00f3n, dicha variable recoge la instancia de la excepci\u00f3n. Si la clase de excepci\u00f3n deriva de la clase ra\u00edz est\u00e1ndar\u00a0<span class=\"std std-ref\">Exception<\/span>, el valor asociado est\u00e1 disponible en el atributo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">args<\/span><\/code>\u00a0de la instancia de excepci\u00f3n y es probable que aparezca en otros atributos.<\/p>\n<p>El c\u00f3digo de usuario puede lanzar excepciones internas. Se puede usar para comprobar un gestor de excepciones o para informar de una condici\u00f3n de error del mismo modo que el int\u00e9rprete lanza la misma excepci\u00f3n. Hay que ser precavido, pues nada incluye que el c\u00f3digo de usuario lance una excepci\u00f3n inadecuada.<\/p>\n<p>Las siguientes excepciones s\u00f3lo se usan como clase base de otras excepciones.<\/p>\n<dl id=\"python-exception-baseexceptionerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">BaseException<\/span><\/code><\/dt>\n<dd>La clase base de todas las comunes excepciones. Deriva de la clase ra\u00edz\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">__builtin__.object<\/span><\/code>, es el tipo m\u00e1s b\u00e1sico.<\/dd>\n<\/dl>\n<dl id=\"python-exception\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">Exception<\/span><\/code><\/dt>\n<dd>\n<p class=\"first\">La clase base de todas las excepciones no existentes. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">BaseException<\/span>.<\/p>\n<p class=\"last\">La clase base de las excepciones. Todas las excepciones internas derivan de esta clase. Todas las excepciones definidas por usuario deber\u00edan derivarse de esta clase, aunque no es obligatorio (todav\u00eda). La funci\u00f3n\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">str()<\/span><\/code>, aplicada a una instancia de una clase (o la mayor\u00eda de sus clases derivadas) devuelve un valor cadena a partir de sus argumentos o una cadena vac\u00eda si no se proporcionaron argumentos al constructor. Si se usa como secuencia, accede a los argumentos proporcionados al constructor (\u00fatil para compatibilidad con c\u00f3digo antiguo). Los argumentos tambi\u00e9n est\u00e1n disponibles en el atributo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">args<\/span><\/code>\u00a0de la instancia, como tupla.<\/p>\n<\/dd>\n<\/dl>\n<dl id=\"python-exception-standarderror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">StandardError<\/span><\/code><\/dt>\n<dd>La clase base para todas las excepciones internas excepto\u00a0<span class=\"std std-ref\">SystemExit<\/span>. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">Exception<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-arithmeticerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">ArithmeticError<\/span><\/code><\/dt>\n<dd>La clase base de las excepciones lanzadas por diversos errores aritm\u00e9ticos:\u00a0<span class=\"std std-ref\">OverflowError<\/span>,\u00a0<span class=\"std std-ref\">ZeroDivisionError<\/span>\u00a0y\u00a0<span class=\"std std-ref\">FloatingPointError<\/span>. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">StandardError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-lookuperror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">LookupError<\/span><\/code><\/dt>\n<dd>La clase base de las excepciones lanzadas cuando una clave o \u00edndice utilizado en una correspondencia (diccionario) o secuencia son incorrectos:\u00a0<span class=\"std std-ref\">IndexError<\/span>,\u00a0<span class=\"std std-ref\">KeyError<\/span>. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">StandardError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-environmenterror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">EnvironmentError<\/span><\/code><\/dt>\n<dd>La clase base de las excepciones que pueden ocurrir fuera del sistema Python:\u00a0<span class=\"std std-ref\">IOError<\/span>,\u00a0<span class=\"std std-ref\">OSError<\/span>. Cuando se crean excepciones de este tipo con una tupla de dos valores, el primer elemento queda disponible en el atributo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">errno<\/span><\/code>\u00a0de la instancia (se supone que es un n\u00famero de error) y el segundo en el atributo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">strerror<\/span><\/code>\u00a0(suele ser el mensaje de error asociado). La propia tupla est\u00e1 disponible en el atributo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">args<\/span><\/code>. Cuando se instancia una excepci\u00f3n\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">EnvironmentError<\/span><\/code>\u00a0con una tupla de tres elementos, los primeros dos quedan disponibles como en el caso de dos elementos y el tercero queda en el atributo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">filename<\/span><\/code>. Sin embargo, por compatibilidad con sistemas anteriores, el atributo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">args<\/span><\/code>\u00a0contiene s\u00f3lo una tupla de dos elementos de los dos primeros argumentos del constructor. El atributo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">filename<\/span><\/code>\u00a0es\u00a0<a class=\"reference internal\" href=\"https:\/\/entrenamiento-python-basico.readthedocs.io\/es\/2.7\/leccion9\/objeto_integrados.html#python-obj-none\"><span class=\"std std-ref\">None<\/span><\/a>\u00a0cuando se cree la excepci\u00f3n con una cantidad de argumentos diferente de 3. Los atributos\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">errno<\/span><\/code>\u00a0y\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">strerror<\/span><\/code>\u00a0son tambi\u00e9n\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">None<\/span><\/code>\u00a0cuando la instancia no se cree con 2 \u00f3 3 argumentos. En este \u00faltimo caso,\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">args<\/span><\/code>\u00a0contiene los argumentos del constructor tal cual, en forma de tupla. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">StandardError<\/span>.<\/dd>\n<\/dl>\n<p>Las siguientes excepciones son las realmente lanzadas.<\/p>\n<dl id=\"python-exception-assertionerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">AssertionError<\/span><\/code><\/dt>\n<dd>Se lanza cuando una sentencia\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">assert<\/span><\/code>\u00a0es\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">False<\/span><\/code>. Deriva de la clase ra\u00edz\u00a0<a class=\"reference internal\" href=\"https:\/\/entrenamiento-python-basico.readthedocs.io\/es\/2.7\/leccion9\/exceptions.html#python-exception-standarderror\"><span class=\"std std-ref\">StandardError<\/span><\/a>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-attributeerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">AttributeError<\/span><\/code><\/dt>\n<dd>Se lanza cuando una referencia o asignaci\u00f3n a atributo fracasa (cuando un objeto no tenga referencias o asignaciones a atributos en absoluto, se lanza, la excepci\u00f3n\u00a0<span class=\"std std-ref\">TypeError<\/span>.) Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">StandardError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-buffererror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">BufferError<\/span><\/code><\/dt>\n<dd>Se lanza cuando un error Buffer sucede. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">StandardError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-eoferror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">EOFError<\/span><\/code><\/dt>\n<dd>Se lanza cuando las funciones internas (<span class=\"std std-ref\">input()<\/span>\u00a0o\u00a0<span class=\"std std-ref\">raw_input()<\/span>) alcanzan un\u00a0<em>end of file<\/em>\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">EOF<\/span><\/code>\u00a0(final de archivo) sin leer datos. N.B.: Los m\u00e9todos\u00a0<span class=\"std std-ref\">read()<\/span>\u00a0y\u00a0<span class=\"std std-ref\">readline()<\/span>\u00a0de los objetos archivo devuelven una cadena vac\u00eda al alcanzar\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">EOF<\/span><\/code>. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">StandardError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-floatingpointerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">FloatingPointError<\/span><\/code><\/dt>\n<dd>Se lanza cuando falla una operaci\u00f3n de coma flotante. Esta excepci\u00f3n siempre est\u00e1 definida, pero s\u00f3lo se puede lanzar cuando Python esta configurado con la opci\u00f3n\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">--with-fpectl<\/span><\/code>\u00a0o se ha definido el s\u00edmbolo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">WANT_SIGFPE_HANDLER<\/span><\/code>\u00a0en el archivo\u00a0<code class=\"file docutils literal notranslate\"><span class=\"pre\">config.h<\/span><\/code>. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">ArithmeticError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-generatorexiterror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">GeneratorExit<\/span><\/code><\/dt>\n<dd>Se lanza cuando la solicitud de salida de un generador Python sucede. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">BaseException<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-ioerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">IOError<\/span><\/code><\/dt>\n<dd>Se lanza cuando una operaci\u00f3n de E\/S (tal como una sentencia\u00a0<span class=\"std std-ref\">print<\/span>, la funci\u00f3n integrada\u00a0<span class=\"std std-ref\">open()<\/span>\u00a0o un m\u00e9todo de un objeto archivo) fracasa por motivos relativos a E\/S, por ejemplo, por no encontrarse un archivo o llenarse el disco. Esta clase se deriva de\u00a0<span class=\"std std-ref\">EnvironmentError<\/span>. En la explicaci\u00f3n anterior se proporciona informaci\u00f3n adicional sobre los atributos de instancias de excepci\u00f3n. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">EnvironmentError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-importerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">ImportError<\/span><\/code><\/dt>\n<dd>Se lanza cuando una sentencia\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">import<\/span><\/code>\u00a0no encuentra la definici\u00f3n del m\u00f3dulo o cuando\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">from<\/span>\u00a0<span class=\"pre\">...<\/span>\u00a0<span class=\"pre\">import<\/span><\/code>\u00a0no encuentra un nombre a importar. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">StandardError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-indexerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">IndexError<\/span><\/code><\/dt>\n<dd>Se lanza cuando un sub-\u00edndice de una secuencia se sale del rango. Los \u00edndices de corte se truncan silenciosamente al rango disponible. Si un \u00edndice no es un entero simple, se lanza\u00a0<span class=\"std std-ref\">TypeError<\/span>. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">LookupError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-indentationerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">IndentationError<\/span><\/code><\/dt>\n<dd>Se lanza cuando una indentaci\u00f3n incorrecta sucede. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">SyntaxError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-keyerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">KeyError<\/span><\/code><\/dt>\n<dd>Se lanza cuando no se encuentra una clave de una correspondencia (diccionario) en el conjunto de claves existentes. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">LookupError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-keyboardinterrupterror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">KeyboardInterrupt<\/span><\/code><\/dt>\n<dd>Se lanza cuando el usuario pulsa la tecla de interrupci\u00f3n (normalmente con la combinaci\u00f3n de teclas\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">Control-C<\/span><\/code>\u00a0o\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">DEL2.7<\/span><\/code>). A lo largo de la ejecuci\u00f3n se comprueba si se ha interrumpido regularmente. Las interrupciones ocurridas cuando una funci\u00f3n\u00a0<span class=\"std std-ref\">input()<\/span>\u00a0o\u00a0<span class=\"std std-ref\">raw_input()<\/span>) espera datos tambi\u00e9n lanzan esta excepci\u00f3n. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">BaseException<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-memoryerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">MemoryError<\/span><\/code><\/dt>\n<dd>Se lanza cuando una operaci\u00f3n agota la memoria pero a\u00fan se puede salvar la situaci\u00f3n (borrando objetos). El valor asociado es una cadena que indica qu\u00e9 tipo de operaci\u00f3n (interna) agot\u00f3 la memoria. Obs\u00e9rvese que por la arquitectura de gesti\u00f3n de memoria subyacente (la funci\u00f3n de C\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">malloc()<\/span><\/code>), puede que el int\u00e9rprete no siempre sea capaz de recuperarse completamente de esta situaci\u00f3n. De cualquier modo, se lanza una excepci\u00f3n para que se pueda imprimir una traza, por si la causa fue un programa desbocado. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">StandardError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-nameerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">NameError<\/span><\/code><\/dt>\n<dd>Se lanza cuando no se encuentra un nombre local o global. S\u00f3lo se aplica a nombre no calificados. El valor asociado es el nombre no encontrado. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">StandardError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-notimplementederror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">NotImplementedError<\/span><\/code><\/dt>\n<dd>Esta excepci\u00f3n se deriva de\u00a0<span class=\"std std-ref\">RuntimeError<\/span>. En clases base definidas por el usuario, los m\u00e9todos abstractos deber\u00edan lanzar esta excepci\u00f3n cuando se desea que las clases derivadas redefinan este m\u00e9todo. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">RuntimeError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-oserror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">OSError<\/span><\/code><\/dt>\n<dd>Esta clase se deriva de\u00a0<span class=\"std std-ref\">EnvironmentError<\/span>\u00a0y se usa principalmente como excepci\u00f3n os.error de os. En\u00a0<span class=\"std std-ref\">EnvironmentError<\/span>\u00a0hay una descripci\u00f3n de los posibles valores asociados.<\/dd>\n<\/dl>\n<dl id=\"python-exception-overflowerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">OverflowError<\/span><\/code><\/dt>\n<dd>Se lanza cuando el resultado de una operaci\u00f3n aritm\u00e9tica es demasiado grande para representarse (desbordamiento). Esto no es posible en los enteros largos (que antes que rendirse lanzar\u00edan\u00a0<span class=\"std std-ref\">MemoryError<\/span>). Por la falta de normalizaci\u00f3n de la gesti\u00f3n de excepciones de coma flotante en C, la mayor\u00eda de las operaciones de coma flotante, tampoco se comprueban. En el caso de enteros normales, se comprueban todas las operaciones que pueden desbordar excepto el desplazamiento a la izquierda, en el que las aplicaciones t\u00edpicas prefieren perder bits que lanzar una excepci\u00f3n. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">ArithmeticError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-runtimeerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">RuntimeError<\/span><\/code><\/dt>\n<dd>Se lanza cuando se detecta un error que no cuadra en ninguna de las otras categor\u00edas. El valor asociado es una cadena que indica qu\u00e9 fue mal concretamente. Esta excepci\u00f3n es mayormente una reliquia de versiones anteriores del int\u00e9rprete; ya casi no se usa. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">StandardError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-stopiteration\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">StopIteration<\/span><\/code><\/dt>\n<dd>Se lanza cuando se indica el final desde\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">iterator.next()<\/span><\/code>. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">Exception<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-syntaxerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">SyntaxError<\/span><\/code><\/dt>\n<dd>Se lanza cuando el analizador encuentra un error en la sintaxis. Esto puede ocurrir en una sentencia\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">import<\/span><\/code>, en una sentencia\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">exec<\/span><\/code>, en una llamada a la funci\u00f3n interna\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">eval()<\/span><\/code>\u00a0o\u00a0<span class=\"std std-ref\">input()<\/span>, o al leer el guion inicial o la entrada est\u00e1ndar (por ejemplo, la entrada interactiva). Si se usan excepciones de clase, las instancias de esta clase tienen disponibles los atributos\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">filename<\/span><\/code>\u00a0(nombre del archivo),\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">lineno<\/span><\/code>\u00a0(n\u00ba de l\u00ednea),\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">offset<\/span><\/code>\u00a0(n\u00ba de columna) y\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">text<\/span><\/code>\u00a0(texto), que ofrecen un acceso m\u00e1s f\u00e1cil a los detalles. En las excepciones de cadena, el valor asociado suele ser una tupla de la forma (mensaje, (nombreFichero, numLinea, columna, texto)). En las excepciones de clase,\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">str()<\/span><\/code>\u00a0s\u00f3lo devuelve el mensaje. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">StandardError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-systemerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">SystemError<\/span><\/code><\/dt>\n<dd>Se lanza cuando el int\u00e9rprete encuentra un error interno, pero la situaci\u00f3n no parece tan grave como para perder la esperanza. El valor asociado es una cadena que indica qu\u00e9 ha ido mal (en t\u00e9rminos de bajo nivel). Se deber\u00eda dar parte de este error al autor o mantenedor del int\u00e9rprete Python en cuesti\u00f3n. Se debe incluir en el informe la cadena de versi\u00f3n del int\u00e9rprete Python (<code class=\"docutils literal notranslate\"><span class=\"pre\">sys.version<\/span><\/code>, que tambi\u00e9n se muestra al inicio de una sesi\u00f3n interactiva), la causa exacta del error y, si es posible, el c\u00f3digo fuente del programa que provoc\u00f3 el error. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">StandardError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-systemexit\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">SystemExit<\/span><\/code><\/dt>\n<dd>Lanzada por la funci\u00f3n\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">sys.exit()<\/span><\/code>. Si no se captura, el int\u00e9rprete de Python finaliza la ejecuci\u00f3n sin presentar una pila de llamadas. Si el valor asociado es un entero normal, especifica el estado de salida al sistema (se pasa a la funci\u00f3n de C\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">exit()<\/span><\/code>), Si es None, el estado de salida es cero (que indica una salida normal sin errores). En el caso de ser de otro tipo, se presenta el valor del objeto y el estado de salida ser\u00e1\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">1<\/span><\/code>. Las instancias tienen un atributo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">code<\/span><\/code>\u00a0cuyo valor se establece al estado de salida o mensaje de error propuesto (inicialmente\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">None<\/span><\/code>). Adem\u00e1s, esta excepci\u00f3n deriva directamente de\u00a0<span class=\"std std-ref\">Exception<\/span>\u00a0y no de la excepci\u00f3n\u00a0<span class=\"std std-ref\">StandardError<\/span>, ya que t\u00e9cnicamente no es un error. Una llamada a\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">sys.exit()<\/span><\/code>\u00a0se traduce a un error para que los gestores de limpieza final (las sentencias\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">finally<\/span><\/code>\u00a0de las sentencias\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">try<\/span><\/code>) se puedan ejecutar y para que un depurador pueda ejecutar un guion sin riesgo de perder el control. Se puede usar la funci\u00f3n os._exit() si es total y absolutamente necesario salir inmediatamente (por ejemplo, tras un\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">fork()<\/span><\/code>\u00a0en el proceso hijo). Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">BaseException<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-referenceerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">ReferenceError<\/span><\/code><\/dt>\n<dd>Se lanza cuando se us\u00f3 un proxy de referencia d\u00e9bil despu\u00e9s de que el referente desapareci\u00f3. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">StandardError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-taberror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">TabError<\/span><\/code><\/dt>\n<dd>Se lanza cuando sucede una mezcla inadecuada de espacios y tabulaciones. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">IndentationError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-typeerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">TypeError<\/span><\/code><\/dt>\n<dd>Se lanza cuando una operaci\u00f3n o funci\u00f3n interna se aplica a un objeto de tipo inadecuado. El valor asociado es una cadena con detalles de la incoherencia de tipos. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">StandardError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-unboundlocalerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">UnboundLocalError<\/span><\/code><\/dt>\n<dd>Se lanza cuando se hace referencia a una variable local en una funci\u00f3n o m\u00e9todo, pero no se ha asignado un valor a dicha variable. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">NameError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-unicodeerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">UnicodeError<\/span><\/code><\/dt>\n<dd>Se lanza cuando se da un error relativo a codificaci\u00f3n\/descodificaci\u00f3n\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">Unicode<\/span><\/code>. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">ValueError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-unicodedecodeerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">UnicodeDecodeError<\/span><\/code><\/dt>\n<dd>Se lanza cuando un error al decodificar\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">Unicode<\/span><\/code>\u00a0sucede. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">UnicodeError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-unicodeencodeerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">UnicodeEncodeError<\/span><\/code><\/dt>\n<dd>Se lanza cuando un error al codificar\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">Unicode<\/span><\/code>\u00a0sucede. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">UnicodeError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-unicodetranslateerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">UnicodeTranslateError<\/span><\/code><\/dt>\n<dd>Se lanza cuando un error al traducir\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">Unicode<\/span><\/code>\u00a0sucede. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">UnicodeError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-valueerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">ValueError<\/span><\/code><\/dt>\n<dd>Se lanza cuando una operaci\u00f3n o funci\u00f3n interna recibe un argumento del tipo correcto, pero con un valor inapropiado y no es posible describir la situaci\u00f3n con una excepci\u00f3n m\u00e1s precisa, como\u00a0<span class=\"std std-ref\">IndexError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-zerodivisionerror\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">ZeroDivisionError<\/span><\/code><\/dt>\n<dd>Se lanza cuando el segundo argumento de una operaci\u00f3n de divisi\u00f3n o m\u00f3dulo es cero. El valor asociado es una cadena que indica el tipo de operandos y la operaci\u00f3n. Deriva de la clase ra\u00edz\u00a0<span class=\"std std-ref\">ArithmeticError<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-warning\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">Warning<\/span><\/code><\/dt>\n<dd>La clase base para las categor\u00edas de advertencias. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">Exception<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-byteswarning\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">BytesWarning<\/span><\/code><\/dt>\n<dd>La clase base para las advertencias acerca de problemas relacionados con bytes y buffer, mas relacionado a la conversi\u00f3n desde\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">str<\/span><\/code>\u00a0o comparando a\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">str<\/span><\/code>. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">Warning<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-deprecationwarning\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">DeprecationWarning<\/span><\/code><\/dt>\n<dd>La clase base para las advertencias acerca de caracter\u00edsticas obsoletas. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">Warning<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-futurewarning\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">FutureWarning<\/span><\/code><\/dt>\n<dd>La clase base para las advertencias acerca de constructores que pueden ser cambiado sistem\u00e1ticamente en el futuro. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">Warning<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-importwarning\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">ImportWarning<\/span><\/code><\/dt>\n<dd>La clase base para las advertencias acerca de probables errores en importar m\u00f3dulos. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">Warning<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-pendingdeprecationwarning\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">PendingDeprecationWarning<\/span><\/code><\/dt>\n<dd>La clase base para las advertencias acerca de caracter\u00edsticas las cuales ser\u00e1n obsoletas en el futuro. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">Warning<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-runtimewarning\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">RuntimeWarning<\/span><\/code><\/dt>\n<dd>La clase base para las advertencias acerca de comportamiento del tiempo de ejecuci\u00f3n dudosa. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">Warning<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-syntaxwarning\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">SyntaxWarning<\/span><\/code><\/dt>\n<dd>La clase base para las advertencias acerca de sintaxis dudosa. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">Warning<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-unicodewarning\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">UnicodeWarning<\/span><\/code><\/dt>\n<dd>La clase base para las advertencias acerca de problemas relacionado con\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">Unicode<\/span><\/code>, m\u00e1s relacionado a problemas de conversi\u00f3n. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">Warning<\/span>.<\/dd>\n<\/dl>\n<dl id=\"python-exception-userwarning\" class=\"docutils\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">UserWarning<\/span><\/code><\/dt>\n<dd>La clase base para las advertencias generadas por c\u00f3digo de usuario. Deriva de la excepci\u00f3n\u00a0<span class=\"std std-ref\">Warning<\/span>.<\/dd>\n<\/dl>\n","protected":false},"excerpt":{"rendered":"<p>Excepciones integradas Las excepciones pueden ser objetos de una clase u objetos cadena. Aunque la mayor\u00eda de las excepciones eran objetos cadena en las anteriores versiones de Python, en Python 1.5 y versiones posteriores, todas las excepciones est\u00e1ndar han sido convertidas en objetos de clase y se anima a los usuarios a que hagan lo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":331,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[39,40],"tags":[],"class_list":["post-393","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion","category-python"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/equipomedios.com\/blog\/wp-content\/uploads\/2024\/08\/python-logo-master-v3-TM.png?fit=601%2C203&ssl=1","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/posts\/393","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/comments?post=393"}],"version-history":[{"count":1,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/posts\/393\/revisions"}],"predecessor-version":[{"id":394,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/posts\/393\/revisions\/394"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/media\/331"}],"wp:attachment":[{"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/media?parent=393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/categories?post=393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/tags?post=393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}