除了在Python中真正做到了什么?

1 python exception

我是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

dka*_*ins 5

这是一个可以帮助您理解的示例.在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)