Something similar to this is pretty common in other languages. For example .NET has System.Double.TryParse
http://msdn.microsoft.com/en-us/library/994c0zb1.aspx
The pattern there is equivalent to returning an extra result as well as the converted value - a boolean indicating whether or not the conversion succeeded (with the "converted value" being 0.0 where conversion fails). A Python version might look like:
success, value = float.parse('thing')
if success:
...
Part of the rational for this approach in .NET is that exception handling is very expensive, so calling TryParse is much more efficient than catching the exception if parsing fails.
All the best,
Michael Foord