how-to-defnite-and-use-custom-exceptions-in-python