[Python-ideas] why not try without except?

spir denis.spir at free.fr
Sat Apr 25 10:32:07 CEST 2009


In various cases, we need to do something (set or update a var or attribute, launch an action, compute data), or not, according to a condition that is a potential case of exception.
Python provides the try...except construct to allow straightforward expression of the non-exceptional case without overloading the code with explicit checkings.

Still, in the common case above, the result is
   except ErrorType:
or we have to fall back to a pre-checking construct
   if not <error_case>:

For instance
      text += doc.footer
   except ErrorType:
   if hasattr(doc, 'footer')
      text += doc.footer

Actually, this shows that 'try' alone can be considered analog to 'if' without 'else' clause, needed when the condition may raise an exception. Both express an optional action. This could be written more directly, because we do not need the condition:
   ? <do_something>
   option <do_something>
with the meaning: "Try & do this, but if there's an exception just let it down."

The same syntax may be reused in other contexts such as for having optional parameters:
   def f(data, option param):
   def f(data, ? param):
Actually, the meaning is the same: "Try & and read a second argument, but if you step on an exception just let it down." Moreover, the body of the func will probably use precisely the same construct to try and do something using the optional param, e.g.:
   class Circle:
      def draw(self, ? fill_color):
         <draw outline>
         ? self.fill(fill_color)

As a nice side-effect, this would also remove one of the common (mis?)uses of None -- which is often considered problematic because of conflicting various uses.

I would then support the introduction of such a syntax, or of 'try' without 'except'. And sincerally thank you for explaining why the latter was not allowed from start.

la vita e estrany

More information about the Python-ideas mailing list