[Python-ideas] Raise exception if (not) true
Steven D'Aprano
steve at pearwood.info
Thu Feb 20 22:16:54 CET 2014
More information about the Python-ideas mailing list
Thu Feb 20 22:16:54 CET 2014
- Previous message: [Python-ideas] Raise exception if (not) true
- Next message: [Python-ideas] with expression
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Thu, Feb 20, 2014 at 11:10:58AM -0600, Ryan Gonzalez wrote:
> In Python, you'll constantly see code like this:
>
> ```python
> if x != y:
> raise ValueError('x != y!!')
> ```
>
> or:
>
> ```python
> if not isinstance(x,SomeType):
> raise TypeError('x is not SomeType!')
> ```
>
> Assertion help a bit:
>
> ```python
> assert isinstance(x,SomeType), 'x is not SomeType!'
> ```
>
> Notice I said "a bit". If optimizations are on, they're disabled. In
> addition, the only type of error thrown is an AssertionError.
Which is why asserts do not help at all. If somebody is using an
assertion merely to save typing out
if cond: raise MoreAppropriateError(message)
then their code is poorly-written and probably broken.
> I propose a `raise_if` function. If the given condition is True, an
> exception is raised. So, the above examples would be shortened to:
Put this at the top of your module:
def raise_if(condition, exception, message):
if condition:
raise exception(message)
Not every three line function needs to be a built-in.
--
Steven
- Previous message: [Python-ideas] Raise exception if (not) true
- Next message: [Python-ideas] with expression
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-ideas mailing list