On Sat, Jun 24, 2006 at 10:32:20PM +1000, Ian Haywood wrote: > Currently all errors must be handled at every point in the stack. I don't like this either.
> however > a lot of the time errors are generated at the top (in the database layer) I agree. > and handled right at the bottom (in GUI code), with exceptions they can pass > through easily and leave the intervening code uncluttered. I agree. One problem is that they do not (yet) pass through beyond the event handler they are raised in. Which you know. Your suggestion to call something like global_error(the_error) sounds OK to me. If we can find a good way to "attach" more meaning to the exception that's propagating to the GUI layer I am totally fine with this solution. Let us get 0.2 out the door and then implement what you suggest. > Exceptions also make it easier to have common error-handling code in the GUI > layer. > IMHO we should do something like this. > > def error (self): > """ > Handle the current exception > """ > exc_class, exc = sys.exc_info ()[:2] > if issubclass (exc_class, GnuMedError): > title = exc.title > s = exc.text > elif issubclass (exc_class, dbapi.OperationalError): > title = "Database Problem" > s = str(exc) > else: > title = "General Error" > s = str(exc) > gmLog.Log (str (exc)) > wx.MessageBox (s, title, style=wx.OK) > > then every GUI event handler has simply. > > try: > > except: > self.error () This needs refinement in many aspects but I perfectly like the approach. As I have said before. Please let us do it in 0.3. Karsten -- GPG key ID E4071346 @ wwwkeys.pgp.net E167 67FD A291 2BEA 73BD 4537 78B9 A9F9 E407 1346 _______________________________________________ Gnumed-devel mailing list [email protected] http://lists.gnu.org/mailman/listinfo/gnumed-devel
