第一档:
try:
# some code
except ValueError, Argument:
print Argument
第二档:
company = "App"
if company is "Apple":
# code
elif company is "Samsung":
# code
else:
raise ValueError("Invalid compnay name")
我的要求是在文件中引发错误,而在另一个文件中除外。
我尝试了上面的代码,但它不接受引发的ValueError。
答案 0 :(得分:2)
首次加载时执行的模块中的顶级代码,通常不是您想要的。您需要具有可以从其他模块调用的功能。这个函数调用很容易包装。
例如,假设您有一个带有以下代码的module1
# module1.py
def do_something():
# blabla
raise ValueError
然后在你的module2中,你可以导入module1并使用do_something
,将它包装在try-except块中
# module2
import module1
try:
module1.do_something()
except ValueError:
print "bam! exception!"
修改强>
旁注:按身份比较字符串是错误的。它的工作原因是对象缓存...直到它没有。您想比较字符串是否具有显式值。例如:
if company == "Apple":
# blabla
数字也是如此。
这有效
>>> a = 4
>>> b = 4
>>> a is b
True
但事实并非如此,因为数字并不总是被缓存
>>> a = 99999999
>>> b = 99999999
>>> a is b
False
答案 1 :(得分:1)
将第二个文件中的代码重构为函数:
def checkCompany(company):
if company == "Apple": #DON'T use "is" to check the equality of strings
pass
elif company == "Samsung":
pass
else:
raise ValueError("Invalid compnay name")
然后导入&从你的第一个文件中调用它:
import your_second_file
try:
name='apppple' #an invalid company name
your_second_file.checkCompany(name)
except ValueError, e:
print e