-
Is there a performance or code maintenance issue with using
assert
as part of the standard code instead of using it just for debugging purposes?Is
assert x >= 0, 'x is less than zero'
better or worse than
if x < 0: raise Exception, 'x is less than zero'
-
Also, is there any way to set a business rule like
if x < 0 raise error
that is always checked without thetry/except/finally
so, if at anytime throughout the codex
is less than 0 an error is raised, like if you setassert x < 0
at the start of a function, anywhere within the function wherex
becomes less then 0 an exception is raised?
15 s
Asserts should be used to test conditions that should never happen. The purpose is to crash early in the case of a corrupt program state.
Exceptions should be used for errors that can conceivably happen, and you should almost always create your own Exception classes.
For example, if you’re writing a function to read from a configuration file into a dict
, improper formatting in the file should raise a ConfigurationSyntaxError
, while you can assert
that you’re not about to return None
.
In your example, if x
is a value set via a user interface or from an external source, an exception is best.
If x
is only set by your own code in the same program, go with an assertion.