0Pricing
Python Academy · Lesson

try / except / else / finally

Structure exception-handling blocks for any scenario.

try / except / else / finally is a free Python Academy lesson on CoddyKit — lesson 2 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Python Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

Introduction

Python's try/except/else/finally gives you complete control over error handling and cleanup.

Basic try/except

try: risky_code() except ExceptionType: handle() — Python executes the except block only when that exception type is raised.
try:
    x = int('abc')
except ValueError:
    print('not a number')

Catching the Exception Object

except ValueError as e: binds the exception to e. Use str(e) or e.args to get the message.
try:
    int('oops')
except ValueError as e:
    print(f'Error: {e}')

Catching Multiple Exceptions

except (TypeError, ValueError) as e: catches either type.
for val in ['abc', None, 42]:
    try:
        print(int(val))
    except (TypeError, ValueError) as e:
        print(f'skipping {val!r}: {e}')

Bare except (avoid it)

except: (no type) catches EVERYTHING including KeyboardInterrupt and SystemExit. Almost always a mistake — always specify types.
try:
    risky = 1/0
except ZeroDivisionError:
    print('division error')  # specific

Multiple except Clauses

You can have multiple except blocks, each handling a different type. Python tries them in order.
def process(val):
    try:
        return 10 / int(val)
    except ValueError:
        print('not a number')
    except ZeroDivisionError:
        print('division by zero')
process('abc')
process('0')

else Clause

try/except/else: the else runs only if NO exception was raised. Use for code that should run on success.
try:
    x = int('42')
except ValueError:
    print('bad input')
else:
    print('parsed:', x)

finally Clause

finally: runs ALWAYS — after try succeeds, after except, even after return or break. Perfect for cleanup.
def read_file(path):
    f = None
    try:
        f = open(path)
        return f.read()
    except FileNotFoundError:
        return None
    finally:
        if f: f.close()
print(read_file('/nonexistent'))

finally with return

If both a return and a finally exist, the finally runs first but the return value from finally wins. Be careful.
def demo():
    try:
        return 'try'
    finally:
        return 'finally'  # overrides!
print(demo())

Nested try Blocks

try blocks can be nested. An inner exception propagates outward if not caught by the inner except.
try:
    try:
        x = 1/0
    except ValueError:
        print('inner')
except ZeroDivisionError:
    print('outer caught it')

Logging Exceptions

import logging; logging.exception('msg') logs the full traceback. Perfect in production code.
import logging
try:
    1/0
except ZeroDivisionError:
    logging.exception('Caught an error')

Quick Check

Which clause runs regardless of whether an exception occurred?

Recap

try/except catches errors. else runs on success. finally always runs (cleanup). Catch specific types; avoid bare except. Use as e to access the exception.

Keep Going

Great work! Move on to the next lesson to keep progressing.

Frequently asked questions

Is the “try / except / else / finally” lesson free?

Yes — the full text of “try / except / else / finally” is free to read here on the web, and the Python Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Python Academy course, upgrade to CoddyKit PRO.

What will I learn in “try / except / else / finally”?

Structure exception-handling blocks for any scenario. You practise Python Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start Python Academy?

No prior experience is required. Python Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 2 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “try / except / else / finally” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this Python Academy lesson?

Yes. Every Python Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. Understanding Exceptions
  2. try / except / else / finally
  3. Raising and Re-raising Exceptions
  4. Custom Exception Classes
← Back to Python Academy