[Bf-committers] Using assert()?

Torsten Rupp torsten.rupp at gmx.net
Tue Aug 17 05:33:16 CEST 2010


Dear Jason,

thanx for your message.

> Asserts are not present in release code, so they should never
> contain code that has side effects.

Yes, that is true. Asserts are only checks, thus never put something 
in an assert with a side effect that is missing when the assert would 
not be there which is usually the case for the non-debug version on 
an application.

> An assert should never be used for ordinary error conditions that
> need to be checked for delt with by the program.

I agree, too. Asserts are not for error handling, but for checking if 
the program still have a consistent state and is doing what was 
intented to do. If something could go wrong in the normal program 
behavior, e. g. open a file fail, this must be handled by some useful 
code which does not simple stop the application (what an assert 
always do). Though I think:

- everything what could go wrong e. g. because of a user interaction, 
must be handled by the program, even the user may misuse the program 
totally.
 
- everything which should never go wrong (the theory), but may go 
wrong for some reason (the reality), should be checked by an assert 
(the check of a precondition). This even become imho more important 
if the failure could cause a disastrous result, e. g. a SigSegV, 
which is usually hard to trace back.

> Used properly I would almost say you do not need permission to add
> asserts. I normally add them all over the place.  Unfortunately
> like you I was nervous about using them when it doesn't seem to be
> wide spread in Blender, so I refrained.

Thanx for this clarification. I just wanted to make sure, what is the 
intention. Thus I will add also asserts() now when this seems to be 
helpful.

Torsten


More information about the Bf-committers mailing list