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