> Traceback (most recent call last): > File "domainspotter.py", line 150, in <module> > runMainParser() > File "domainspotter.py", line 147, in runMainParser > td.run() > File "domainspotter.py", line 71, in run > checkdomains.lookup() > File "domainspotter.py", line 108, in lookup > from rwhois import WhoisRecord, NoSuchDomain > ImportError: cannot import name NoSuchDomain > > Maybe I need to import something else to be able to throw it. > > I think if someone can explain a more general form of this I would be on > better footing: To use a custom error code (from a module) in a loop or > anywhere else, do I need to import the code itself? I had assumed that > once I imported the module that defined the error code, I could catch it > just like a core Python error code.
>>The problem is evident. The name NoSuchDomain is not defined. It is not a >>variable. It is just a string. When you call an error like this raise >>'NoSuchDomain', it's called something - don't know what (string >>exception?) - but as you found out, that method of raising errors is now >>frowned upon (deprecated). The way you are supposed to raise errors is to >>create a new class, subclassing Exception. Then you would be able to catch >>it by variable name as you are trying to do with the import. This is exactly what I needed, awesome! Looks like this is what you were saying to do?: http://docs.python.org/tut/node10.html#SECTION0010500000000000000000 >>But you certainly can't import a constant string! It's like trying to import >>the >>contents of a string variable, instead of the variable itself. Again, the >>problem is deprecation, the rwhois will eventually have to be re-written so >>that it uses exception classes, instead of just raising string errors. That would seem best. I will see if they have this in the works. Thanks again! _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor