异常处理:顾名思义报错处理方法,目的是虽然程序出错,但此错不想让用户看到。
一次可以对单个异常处理,也可以多个一起处理,或可以捕捉所有所有异常,异或自定义异常。
常见异常类型:
AttributeError 属性异常 IOError 输入/输出异常 ImportError 导入错误 IndentationError 缩进异常
IndexError 下标索引超出序列边界 KeyError 访问字典中不存在的键 KeyboardInterrupt Crtl+C被按下
NameError 使用一个还未被赋予对象的变量 SyntaxError Python 语法错误 TypeError 类型错误
unboundLocalError
ValueError 数值用法异常
用法:
1.抓取一个错误
#KeyError and IndexError book={} names=['xiaohua','xiaoming'] try: book['bookname1'] # 抓单独错误 names[2] except Exception as e: #抓住所有错误,但不能定位,一般放在最后 print("出错了",e) try: #book['bookname1'] #抓单独错误 names[2] except KeyError as e: #KeyError为字典错误 print("没有这个key",e) except IndexError as e: #IndexError为列表错误 print("列表操作错误",e)
#ValueError a="Sun Dapeng" try: int(a) except ValueError as e: print(e)
2.合并错误类型写法
#合并错误类型 book={} names=['xiaohua','xiaoming'] try: book['bookname1'] names[2] except (KeyError,IndexError) as e: #按顺序抓取要求错误,抓到错误截止 print(e)
3.抓取所有错误
#抓取所有错误 try: open("abc.txt") except Exception as e: #抓住所有错误,但不能定位,一般放在最后 print("出错了",e) else: print("一切正常") finally: print("不管有没有错都执行")
4.自定义异常
自定义异常 class XiaoError(Exception): def __init__(self,msg): #异常报错的内容 self.message=msg try: raise XiaoError ('Pycharm无法启动') #触发错误 except XiaoError as e: #抓住异常,e为(Pycharm无法启动) print(e)