Python——异常处理

异常:代码中的逻辑错误

程序一旦发生错误,就从错误的位置停下来不继续执行

使用try和except就能处理异常

try:
    int('aaa')
    print('111')    # 检查错误的位置
    1/0
    print('222')
    name
    print('333')
    2 + '3'
    [][3]
    {}['k']
    ret = int(input('number >>> '))
    print(ret * '*')
except ValueError:
    print('输入的数据类型有误')
except IndexError:
    print('超出列表的最大长度了')
except Exception:
    print('你错了')
else:
    print('没有异常的时候执行此代码')
finally:
    print('不管代码有没有异常,都执行此代码')
View Code

  1. try:

    需要处理的错误代码

  2. except:     

    except + 错误类型:当代码发生错误且错误类型符合时,执行此段代码
    except 支持多分支
    except + Exception: 万能异常处理
      有了万能异常处理仍然要把能预测到的问题单独处理
      单独处理的所有内容都应该写在万能异常之前

# 可以看到报错信息的异常处理

try:
    int('aaa')
    print('111')    # 检查错误的位置
    1/0
    print('222')
    name
    print('333')
    2 + '3'
    [][3]
    {}['k']
    ret = int(input('number >>> '))
    print(ret * '*')
except Exception as error:  # 可以看到报错信息
    print('你错了',error)
View Code

 

  3. else:

    没有异常的时候执行此代码

  4. finally:

    不管代码有没有异常,都执行此代码
    finally 和 return 相遇的时候,依然会执行
      执行到return时,发现后面还有finally,先执行finally,再返回
      常用于在函数中做异常处理,不管是否异常,去做一些收尾工作(如:关闭文件)

# finally的用法

# (1)不用finally
def func():
    try:
        f = open('file','w')
        f.close()
        return True
    except:
        f.close()
        return False
print(func())


# (1)使用finally
# 执行到return时,发现后面还有finally,先执行finally,再返回
def func():
    try:
        f = open('file','w')
        return True
    except:
        return False
    finally:
        print('执行finally了')
        f.close()
print(func())
View Code

 

posted @ 2018-10-10 20:12  xc_718  阅读(83)  评论(0编辑  收藏  举报