In general, wherever we have
```
def some_operation:
  if bad_stuff:
    return (None, error_message)
  else:
    return (value, success_message)

value, message = some_operation()
if value is None:
  return display_error(message)
use(value)
display_success(message)
```
Wouldn't it be better to instead do:
```
def some_operation:
  if bad_stuff:
    raise Exception(error_message)
  else:
    return value

try:
  value = some_operation()
except Exception as e:
  return display_error(e.message)
use(value)
display_success(success_message)
```