这个
try
块不会生成异常,因为表达式计算为真/假,而且奇数/偶数检查逻辑错误。
class Error(Exception):
pass
class UserError(Error):
@classmethod
def handle_even(cls, number):
if number % 2 != 0:
raise Error('error: odd number\n')
return number
@classmethod
def handle_odd(cls, number):
if number % 2 == 0:
raise Error('error: even number\n')
return number
def take_even(number):
print(number) # if user input is bad, this won't execute
def take_odd(number):
print(number) # if user input is bad, this won't execute
# This will raise an 'Error' exception (error: odd number)
take_even(UserError.handle_even(5))
# This will raise an 'Error' exception (error: even number)
take_odd(UserError.handle_odd(4))
你可以处理这些具体的
Error
例外情况如下:
try:
take_even(UserError.handle_even(5))
except Error as e:
print(e) # print 'error: odd number'
try:
take_odd(UserError.handle_odd(4))
except Error as e:
print(e) # print 'error: even number'
编辑:
根据@nathanv_“rzemnieks建议将方法更改为类方法。