Python中的异常处理

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,但是异常也不能滥用。

你可能感兴趣的:(Python中的异常处理)