Message181919
| Author |
barry |
| Recipients |
asvetlov, barry, brett.cannon, chris.jerdonek, cvrebert, eric.snow, ezio.melotti, maker |
| Date |
2013年02月11日.18:33:40 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<20130211133345.04388432@anarchist.wooz.org> |
| In-reply-to |
<1360603860.74.0.637338870761.issue15767@psf.upfronthosting.co.za> |
| Content |
On Feb 11, 2013, at 05:31 PM, Brett Cannon wrote:
>Right, so what's typical? =) I mean do most people see ImportError for
>optional modules (e.g. not on support platforms), or do most people see
>ImportError because they messed up and tried to import something that they
>expected but actually isn't there for some reason.
There are a few common use cases (or perhaps anti-use cases) where you see
ImportErrors. I might be missing some, but I'd put these in roughly
descending order of commonness.
* Trying alternative imports for compatibility reasons. You always expect
ImportErrors in these cases, and you'll always catch them in try/excepts.
* Missing modules, submodules, or attributes in from-imports. These can be
unexpected if you think you've got the right version of a package, or
expected for compatibility reasons.
* Trying to conditionally import optional modules. Again, expected, and
they'll be wrapped in try/except.
I guess the case you're trying to differentiate with MNF is, the from-import
case, i.e. did the error occur because the module was missing or because the
attribute was missing?
It's hard to say which is more likely, which I guess is why you're having a
hard time deciding. :) If I had to vote, I'd go with MNFError 1) because it's
a subclass of ImportError; 2) it'll be more informative in the case where it
really *is* an error; 3) isn't that big of a deal in cases where it's
expected; 4) we're used to seeing ImportError anyway, and probably most code
won't care and will just use ImportError. |
|