How to catch EOFError Exception in Python?

EOFError is commonly seen when a program tries to read input, but there is no data left to read. This can happen when input is redirected from a file or when the user provides no input and presses Ctrl+D (Unix) or Ctrl+Z (Windows).

The best way to catch EOFError is by using the try-except block. Below are various ways to handle EOFError properly in Python ?

  • Using try-except block with EOFError
  • Using try-except-else block
  • Using try-except-finally block

Using try-except Block with EOFError

In Python, the input() function raises an EOFError if no input is given. You can catch this exception using a try-except block to prevent the program from crashing.

Example

In this example, we try to read user input. If no input is provided and EOF is reached, the EOFError is caught ?

try:
    print("Enter something (or press Ctrl+D to trigger EOF):")
    data = input()
    print("You entered:", data)
except EOFError:
    print("No input provided. EOFError caught.")

The output when no input is given ?

Enter something (or press Ctrl+D to trigger EOF):
No input provided. EOFError caught.

Using try-except-else Block

The try-except-else block allows you to run statements only when no exception occurs. If an EOFError is raised in the try block, the except block handles it. If no error occurs, the else block runs.

Example

If input is successfully received, the else block prints it. Otherwise, the except block catches the EOFError ?

try:
    name = input("Enter your name: ")
except EOFError:
    print("EOFError caught. No name entered.")
else:
    print("Hello,", name)

When EOF is triggered without typing a name ?

Enter your name: 
EOFError caught. No name entered.

Using try-except-finally Block

The finally block runs code regardless of whether an exception occurs or not.

Example

The finally block will always execute even if an EOFError is raised ?

try:
    age = input("Enter your age: ")
    print("Age entered:", age)
except EOFError:
    print("Input not provided. EOFError caught.")
finally:
    print("Program finished.")

Output when no input is provided ?

Enter your age: 
Input not provided. EOFError caught.
Program finished.

Handling EOFError in Loops

When reading multiple inputs inside a loop, an EOFError can occur if the input ends unexpectedly. Without proper handling, the program may crash. Use a try-except block to catch the EOFError and exit the loop safely.

Example

This loop continuously reads user input line by line until EOF is detected ?

print("Enter multiple lines (press Ctrl+D to end):")
lines = []

while True:
    try:
        line = input()
    except EOFError:
        print("End of input detected.")
        break
    else:
        print("You entered:", line)
        lines.append(line)

print(f"Total lines entered: {len(lines)}")

Output when EOF is triggered ?

Enter multiple lines (press Ctrl+D to end):
End of input detected.
Total lines entered: 0

Comparison of Methods

Method Use Case Additional Block
try-except Basic error handling None
try-except-else Execute code when no error else
try-except-finally Always run cleanup code finally

Conclusion

Use try-except blocks to gracefully handle EOFError when reading input. The else block executes on success, while finally ensures cleanup code always runs regardless of exceptions.

Updated on: 2026-03-24T16:24:24+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements