~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/code-style.txt

  • Committer: Martin Pool
  • Date: 2010-12-14 23:39:41 UTC
  • mto: This revision was merged to the branch mainline in revision 5571.
  • Revision ID: mbp@sourcefrog.net-20101214233941-95uq6n9xf0xgtyc3
Code guidelines re exception objects

Show diffs side-by-side

added added

removed removed

Lines of Context:
364
364
 
365
365
Because repr methods are often called when something has already gone
366
366
wrong, they should be written somewhat more defensively than most code.
 
367
They shouldn't have side effects like doing network or disk
 
368
IO.
367
369
The object may be half-initialized or in some other way in an illegal
368
370
state.  The repr method shouldn't raise an exception, or it may hide the
369
371
(probably more useful) underlying exception.
385
387
``Exception`` (which excludes system errors in Python2.5 and later) would
386
388
be better.
387
389
 
 
390
The ``__str__`` method on exceptions should be small and have no side
 
391
effects, following the rules given for `Object string representations`_.
 
392
In particular it should not do any network IO, or complicated
 
393
introspection of other objects.  All the state needed to present the
 
394
exception to the user should be gathered before the error is raised.
 
395
In other words, exceptions should basically be value objects.
 
396
 
388
397
 
389
398
Test coverage
390
399
=============