异常捕获

1.异常
异常就是错误。
执行程序的过程中,如果出现异常,会中断程序的执行()
exit() - 这个表示提前结束程序,也算时正常结
2.异常捕获 - 让程序在出现异常的时候,不崩溃,还可以接着往后执行
注意:不要滥用异常捕获。如果是因为使用者使用不当导致程序出现异常,又希望在出现异常的时候可以继续执行,才使用异常捕获。
结构1: - 捕获所有异常

try:
需要捕获异常的代码段1(代码1)
需要捕获的异常的代码段2
except:
捕获到异常需要执行的代码块(代码2)

执行过程:先执行代码1,如果出现异常直接马上执行代码2;如果没有出现异常,就不执行代码2
如果需要捕获异常的代码段1中出现异常,将不会判断需要捕获的异常的代码段2,直接马上执行捕获到异常需要执行的代码块

结构2: - 捕获指定异常

try:
需要捕获异常的代码段1(代码1)
需要捕获的异常的代码段2
except 异常类型:
捕获到异常需要执行的代码块(代码2)

结构3: - 同时捕获多种异常

try:
需要捕获异常的代码段1(代码1)
需要捕获的异常的代码段2
except (异常类型1,异常类型2…):
捕获到异常需要执行的代码块(代码2)

结构4:

try:
需要捕获异常的代码段1(代码1)
需要捕获的异常的代码段2
except 异常类型1:
捕获到异常需要执行的代码块1(代码2)
except 异常类型2:
捕获到异常需要执行的代码块2

try:
    print('abc'[4])
except:
    print('捕获到异常')
print('===')

try:
    age = int(input('请输入年龄:'))
    if age >= 18:
        print('成年')
except:
    print('年龄输入有误')
注意:如果知道异常类型,尽量把异常类型加入进去。因为这样可以避免很多错误比如下面的例子
try:
    age = int(input('请输入年龄:'))        # ValueError
    if age >= '18':
        print('成年!')
    else:
        print('未成年!')
except:
    print('年龄输入有误!')
这个问题明显是程序员自身书写代码出现了错误,所有此时就算输入对了也会异常,因为数字类型和字符串类型无法比较,也是一个异常,导致会就算输入正确的数字,因为异常,也只能会输入except后面的代码段