博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3异常处理
阅读量:5049 次
发布时间:2019-06-12

本文共 1588 字,大约阅读时间需要 5 分钟。

一. 简介

  在编程过程中为了增加友好性,在程序出现Bug时一般不会直接将错误信息展示给用户,而是提供一个友好的输出提示。

 

二. 使用

1. 异常基础

常用结构:

try:    passexcept Exception,ex:    pass

其他结构:

try:    # 主代码块    passexcept KeyError,e:    # 异常时,执行该块    passelse:    # 主代码块执行完,执行该块    passfinally:    # 无论异常与否,最终执行该块    pass

2. 异常种类

#  常用异常种类AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性xIOError 输入/输出异常;基本上是无法打开文件ImportError 无法引入模块或包;基本上是路径问题或名称错误IndentationError 语法错误(的子类) ;代码没有正确对齐IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]KeyError 试图访问字典里不存在的键KeyboardInterrupt Ctrl+C被按下NameError 使用一个还未被赋予对象的变量SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)TypeError 传入对象类型与要求的不符合UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它ValueError 传入一个调用者不期望的值,即使值的类型是正确的

3. 多个异常捕获

try:    passexcept IndexError,e:    passexcept KeyError,e:    passexcept ValueError,e:    pass 

4. 万能异常捕获

try:    passexcept  Exception,e:    pass

疑问:既然有了万能异常,那么我们还需要单异常捕获或者多异常捕获吗?

自问自答:很多场景我们需要明确异常种类,根据异常种类能快速定位产生异常的原因。如果所有异常都用万能异常捕获,虽然避免了程序抛出难看的异常,但是也无法帮助我们解决问题,常用思路是对于特殊的异常我们单独做异常报错,其他可以忽略的异常用万能异常处理。

s1 = 'hello'try:    int(s1)except KeyError,e:    print('键错误')except IndexError,e:    print('索引错误')except Exception, e:    print('错误')

5. 自定义异常

class MyException(Exception):     def __init__(self, msg):        self.message = msg     def __str__(self):        return self.message try:    raise MyException('我的异常')except MyException,e:    print(e)

6. 主动触发异常

try:    raise Exception('错误了。。。')except Exception,e:    print(e)

7. 断言

# 条件成立不报错,反之报错# assert 条件assert 1 == 1        # 条件成立,则继续执行下面的代码 assert 1 == 2        # 条件不成立,则报错

 

 

 

转载于:https://www.cnblogs.com/wang-yc/p/5630209.html

你可能感兴趣的文章
Flex与ASP.NET通过Remoting方式交互基本思路
查看>>
Git常用命令清单笔记
查看>>
bzoj4012:[HNOI2015]开店
查看>>
python 学习笔记一
查看>>
在vue-cli项目中使用echarts
查看>>
函数connect
查看>>
window.location.href 和 window.location.replace 的区别
查看>>
PPM格式解析
查看>>
asp.net网站前台显示当前日期的js代码
查看>>
在.net中为什么第一次执行会慢?
查看>>
spring事务详解
查看>>
B-树和B+树的应用
查看>>
杭电2044
查看>>
java.lang.IllegalArgumentException: argument type mismatch
查看>>
Python 配置文件 ConfigParser 模块
查看>>
单片机结构体内存的分配
查看>>
如何修复“网络路径”,错误代码0x80070035
查看>>
3.结构变量成员的表示方法
查看>>
只能打开一个实例
查看>>
数组的map方法
查看>>