Python中的异常处理和Java中的类似,看下代码:
try:
s = input('please enter two numbers separated by comma: ')
num1 = int(s.split(',')[0].strip())
num2 = int(s.split(',')[1].strip())
except ValueError as err:
print('Value Error: {}'.format(err))
except IndexError as err:
print('Index Error: {}'.format(err))
except Exception as err:
print('Other error: {}'.format(err))
finally:
print('finally')
print('continue')
当程序存在多个 except block时,最多只有一个 except block会被执行。如果存在多个匹配的,只有最前面的except block会被执行,其他则被忽略。
finally:无论什么情况下,finally中的语句都会被执行,即使前面的 try 和 except block中使用了 return 语句。
自定义异常
我们可以创建自己的异常类型。
class MyInputError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return ("{} is valid input".format(self.value))
try:
raise MyInputError(1)
except MyInputError as err:
print('error: {}'.format(err))
error: 1 is valid input
异常使用场景
通常来说,在程序中,如果我们不确定某段代码能否执行成功,这个地方就需要使用异常处理。
比如将json字符串转json,如果字符串不符合格式要求,可能会报错,这时候,可以添加try/except,但是异常也不能滥用。