[viff-devel] Exceptions?

Martin Geisler mg at daimi.au.dk
Mon Sep 1 16:03:18 PDT 2008


"Thomas Jakobsen" <thomas.jak at gmail.com> writes:

Hi Thomas,

This is just some scattered thoughts...

> [...] logging and for sending to the VIFF developers for debugging.

For logging information as we go along I suggest we use one of the
standard Python frameworks, see:

  http://tracker.viff.dk/issue5

> Another question is how this could be implemented in VIFF. As far as I
> know, exceptions in Python take an array of arguments, so we could
> define the first to be the user message and the second to be a
> detailed msg.

Exceptions are just classes which normally derive from the Exception
class (I'm not even sure this is a hard requirement). But they can take
any arguments you like. Old-style syntax was

  raise ValueError "bad idea"

but that has been deprecated and replaced by

  raise ValueError("bad idea")

There are some info about the standard exceptions here:

  http://docs.python.org/lib/module-exceptions.html

> But how do we then distinguish exceptions with nice user messages from
> other exceptions? One way could be to use a custom exception class
> that has a userMsg and a detailedMsg field:
>
>    raise NiceCustomException(<user message>, <detailed message>)

The standard class Exception (or BaseException in Python 2.5) has an
args attribute for the constructor arguments, and a message attribute
for a single message.

> or simply
>
>    raise NiceCustomException(<message>)
>
> if there is no need to distinguish. Further, if we let the
> NiceCustomException have room for an inner exception, we have the
> opportunity to intercept an exception from somewhere else and equip it
> with an appropriate user message, e.g.:
>
>   try:
>      externalLib.doComplicatedDecryptStuff()
>   except BadPaddingException, inst:
>      raise NiceCustomException("Could'nt decrypt, wrong password?", inner=inst)
>
> Again, this will allow the programmer of a VIFF-based application to
> expose the user to a short and descriptive explanation while keeping
> access to all detailed info about the problem that has occured. When
> we use the custom exception solution, he will also be able to
> distinguish between an exception with a nice user message and, say,
> some unpredictable and hairy RuntimeException where the user is most
> happy knowing only that "Some exception occured".

We could do something like that. And then we will also have to take into
account the way exceptions are used with Twisted. I think this picture
explains it quite well:

  http://twistedmatrix.com/projects/core/documentation/howto/defer.html#auto2

-- 
Martin Geisler

VIFF (Virtual Ideal Functionality Framework) brings easy and efficient
SMPC (Secure Multi-Party Computation) to Python. See: http://viff.dk/.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
URL: <http://lists.viff.dk/pipermail/viff-devel-viff.dk/attachments/20080902/25a0e9fd/attachment.pgp>


More information about the viff-devel mailing list