我是Python的新手,并且没有异常经验,但我已经阅读了所有文档但找不到答案......所以我正在寻找更深入的视图,除了语义.当我们有例如:
try:
x = 2
except GreaterThanOne:
print("The value is greater than one")
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我希望打印消息.当输入的值大于1时,是否有一种方法可以定义GreaterThanOne类(异常)来引发?
好的,让我更具体一点......
每个错误都会由一个特定的规则引发,该规则应该添加到错误属性中,对吗?例如:
try:
myvalue = x / y
except ZeroDivisionError:
print("Some error message printed ...")
Run Code Online (Sandbox Code Playgroud)
因此,当我使用此代码并输入y为0时,ZeroDivisionError将引发异常......例如,我可以重新定义ZeroDivisionError来像这样引发但是如果将y设置为... 2或3或任何其他值?
输入:
x = 10
y = 2
try:
myvalue = x / y
except ZeroDivisionError:
print("division by 2")
Run Code Online (Sandbox Code Playgroud)
输出: division by 2
这是一个可以帮助您理解的示例.在Python解释器中运行它,并观察在调用时如何引发和捕获(或未捕获)异常set_val(2).
# Defining our Exception subclass:
class GreaterThanOne(Exception):
pass
# The global value we pretend to care about:
val = 0
# Function to set a value but possibly raise our new Exception
def set_val(new_val):
if new_val > 1:
raise GreaterThanOne("%d > 1" % new_val)
val = new_val
# Catching exception:
try:
set_val(0)
set_val(1)
set_val(2)
except GreaterThanOne:
print "Whoops - one of those values was greater than one"
# Not catching exception:
set_val(0)
set_val(1)
set_val(2)
set_val(3)
Run Code Online (Sandbox Code Playgroud)