Menu
Coddy logo textTech

¿Qué es un error en tiempo de ejecución?

Un error en tiempo de ejecución (runtime error) es un error que ocurre mientras el programa se está ejecutando, cuando una operación no se puede realizar con los valores que tiene, como dividir entre cero o leer más allá del final de una lista. El programa se detiene en esa línea salvo que el error se maneje.

Por Kevin Spektor, Cofundador y CTO

Actualizado el 24 de septiembre de 2026

Un error en tiempo de ejecución espera a que el programa ya esté en marcha. El código supera todas las comprobaciones antes de empezar, funciona bien durante un rato y luego llega a una operación que no se puede realizar con los valores que tiene en ese momento. Esta función funciona con una lista y falla con otra:

85.0
Traceback (most recent call last):
  File "main.py", line 5, in <module>
    print(average([]))
          ^^^^^^^^^^^
  File "main.py", line 2, in average
    return sum(scores) / len(scores)
           ~~~~~~~~~~~~^~~~~~~~~~~~~
ZeroDivisionError: division by zero

La primera llamada imprime 85.0. La segunda pasa una lista vacía, así que len(scores) vale 0 y la división no puede hacerse. La gramática estaba bien, así que no es un error de sintaxis. El problema solo existe con ciertos datos, y por eso un error en tiempo de ejecución puede aparecer después de que un programa haya funcionado bien cien veces.

Qué pasa cuando ocurre un error en tiempo de ejecución

  1. El programa llega a una operación, aquí sum(scores) / len(scores).
  2. El runtime la comprueba antes de realizarla. CPython revisa el divisor antes de dividir, la JVM comprueba cada índice de un array y Python comprueba que una clave de diccionario existe antes de devolver su valor.
  3. La comprobación falla, así que el runtime crea un objeto de error. En Python y Java ese objeto es una excepción, y registra el tipo de error, un mensaje y el lugar donde ocurrió.
  4. El runtime busca código que maneje ese tipo de error, primero en la función actual, luego en la función que la llamó, y así hacia fuera.
  5. Si nada lo maneja, el programa se detiene. Python imprime un traceback y termina con el código de salida 1. Java imprime una traza de pila que empieza por Exception in thread "main".

Los lenguajes sin estas comprobaciones se comportan de otra manera. C no comprueba los índices de los arrays ni los punteros, así que un acceso a memoria incorrecto o corrompe datos en silencio o hace que el sistema operativo termine el programa con un segmentation fault.

Todo lo que el programa hizo antes de la línea que falla ya ha ocurrido. Este bucle imprime tres colores antes de fallar en el cuarto:

red
green
blue
Traceback (most recent call last):
  File "main.py", line 4, in <module>
    print(colors[i])
          ~~~~~~^^^
IndexError: list index out of range

Cómo leer un traceback

Un traceback de Python se lee de abajo arriba. La última línea da el tipo de error y el mensaje: ZeroDivisionError: division by zero. Las líneas de encima muestran la cadena de llamadas, de la más antigua a la más reciente. En el primer ejemplo, la línea 5 llamó a average, y la línea 2, dentro de average, es donde falló la división.

La línea donde ocurrió el error no siempre es la que hay que cambiar. La línea 2 de average es correcta. La pregunta de verdad es cómo llegó ahí una lista vacía, así que sigue el valor erróneo hasta su origen y corrígelo allí. Cuando un traceback pasa por archivos de bibliotecas que no escribiste tú, busca la última línea que apunta a tu propio archivo.

Errores en tiempo de ejecución comunes

Cada uno de estos mensajes está copiado de Python 3.12.

ErrorEjemploMensaje
ZeroDivisionError10 / 0division by zero
IndexError["red", "green", "blue"][3]list index out of range
KeyError{"theme": "dark"}["font"]'font'
ValueErrorint("twenty")invalid literal for int() with base 10: 'twenty'
TypeError"Total: " + 5can only concatenate str (not "int") to str
AttributeErrorllamar a .upper() sobre None'NoneType' object has no attribute 'upper'
FileNotFoundErroropen("missing.txt")[Errno 2] No such file or directory: 'missing.txt'
RecursionErroruna función que se llama a sí misma sin finmaximum recursion depth exceeded

Java tiene equivalentes directos, como ArithmeticException, ArrayIndexOutOfBoundsException, NumberFormatException y NullPointerException. Una división entera entre cero que nadie captura imprime esto en Java:

Exception in thread "main" java.lang.ArithmeticException: / by zero

JavaScript es más tolerante con los números: 10 / 0 es Infinity, no un error. Falla cuando usas un valor que no existe. Node.js imprime esto para user.name cuando user es undefined:

TypeError: Cannot read properties of undefined (reading 'name')

Cómo corregir un error en tiempo de ejecución

  1. Reprodúcelo. Vuelve a ejecutar el programa con la misma entrada y confirma que obtienes el mismo error.
  2. Lee la última línea del traceback y después busca la línea correspondiente en tu propio código.
  3. Mira los valores implicados. Imprímelos justo antes de la línea que falla, o detente ahí con un punto de interrupción del depurador.
  4. Corrige la causa. Arregla el índice, protege el caso especial o valida la entrada antes de usarla.

En la función average, la solución es decidir cuál debe ser la media de ninguna nota y decirlo en el código:

85.0
0

Algunos fallos no dependen de ti: un archivo que se borró, una red que agota el tiempo de espera, un usuario que escribe letras donde va un número. No puedes evitarlos corrigiendo el código, así que los capturas con el manejo de excepciones y decides qué hace el programa a continuación. Lo que no debes hacer es envolver un bug en un try y esconderlo. Un IndexError de un bucle que cuenta un paso de más es un fallo que hay que corregir, no un error que capturar.

Mensajes de runtime error en Windows y en Excel

El término también aparece fuera de tu propio código. Un cuadro de diálogo de Windows titulado Microsoft Visual C++ Runtime Library con las palabras Runtime Error! significa que un programa escrito en C++ sufrió un error fatal y el runtime de C++ lo cerró. Como usuario no puedes cambiar ese código, así que los remedios habituales son actualizar el programa, reparar o reinstalar los paquetes Microsoft Visual C++ Redistributable y, en el caso de los juegos, actualizar el controlador de la tarjeta gráfica.

Las macros de Excel escritas en VBA notifican errores en tiempo de ejecución numerados. Run-time error '9': Subscript out of range significa que la macro pidió una hoja o un elemento de array que no existe, y Run-time error '1004' es un error general que se produce cuando falla una operación sobre un libro, una hoja o un rango. La idea es la misma que en Python: código válido que se encontró con un valor que no podía manejar.

Qué leer después

Los errores en tiempo de ejecución tienen dos hermanos: el error de sintaxis, que se detecta antes de que empiece el programa, y el error lógico, que nunca produce ningún mensaje. Para recuperarte de los errores en tiempo de ejecución en lugar de dejar que el programa falle, lee manejo de excepciones y después las guías de Python sobre excepciones y depuración de errores. El curso de Python te pone a escribir y corregir código como este en cada lección.

Preguntas frecuentes

¿Qué diferencia hay entre un error en tiempo de ejecución y un error de sintaxis?
Un error de sintaxis se detecta antes de que el programa empiece, porque el código rompe la gramática del lenguaje, así que no se ejecuta ninguna línea. Un error en tiempo de ejecución ocurre después, con el programa en marcha, cuando una línea válida se encuentra con un valor que no puede manejar. Todas las líneas anteriores ya se han ejecutado y pueden haber impreso algo.
¿Por qué me salen errores en tiempo de ejecución una y otra vez?
Normalmente porque el código da por hecho algo sobre sus datos que no siempre es cierto: que una lista nunca está vacía, que un archivo existe, que el usuario escribe un número. Cada suposición funciona con las entradas que probaste y falla con una que no probaste. Prueba con entradas vacías, cero, ausentes y muy grandes, y comprueba o maneja esos casos de forma explícita.
¿Qué significa Runtime Error en LeetCode?
Significa que tu solución compiló pero falló en al menos un caso de prueba. Las causas habituales son un índice fuera de rango, dividir entre cero, usar un valor null o None, o una recursión tan profunda que desborda la pila. Ejecuta tú mismo la entrada que falla, que aparece en la página de resultados, y revisa los casos límite: un array vacío, un solo elemento y el tamaño máximo permitido.
¿Un error en tiempo de ejecución es lo mismo que una excepción?
No exactamente. En Python y Java, la mayoría de los errores en tiempo de ejecución se notifican como excepciones, y eso es lo que permite al programa capturarlos. Pero lenguajes como C tienen errores en tiempo de ejecución y ninguna excepción. En Java, RuntimeException es además el nombre de una familia concreta de excepciones, las no comprobadas como NullPointerException.
¿Puede un compilador detectar errores en tiempo de ejecución?
Solo algunos. Un compilador o un verificador de tipos como mypy puede demostrar que ciertos fallos son imposibles, por ejemplo sumar texto a un número. Pero no puede conocer los valores que llegan mientras el programa se ejecuta, como un número que escribe el usuario y resulta ser cero. Esos errores solo se descubren ejecutando el código o se manejan comprobando la entrada.
Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR