Error handling

Real programs meet bad input. try/except lets your code recover instead of crashing.

`try:` runs risky code; `except SomeError:` handles the failure. Catch specific errors (like `ValueError` or `ZeroDivisionError`) rather than everything.

try:
    n = int("abc")
except ValueError:
    n = 0
print(n)   # 0

More lessons in Pythonic essentials