Fork me on GitHub

【基础10】【自学笔记】python错误异常处理

 一、如何抛出异常?

异常的产生有两种来源:

  • 一种是程序自动抛出,比如 1/0 会自动抛出 ZeroDivisionError

  • 一种是开发者主动抛出,使用 raise 关键字抛出。

示例:

def demo_func(filename):
    if not os.path.isfile(filename):
        raise Exception

  

二.常见异常总结

1.SynataxError:语法错误

解决方法:

①查看代码有没有红色波浪线

②熟悉python基本语法

  

2.NameError:试图访问的变量名不存在

解决方法:

①检查对应的变量名是否有定义并赋值,是否写错了变量名称

  

3.IndexError:索引错误,使用的所以你不存在,常为索引超出序列范围

解决方法:

①检查lis对象索引选择是否超出了本来的长度

  

4.KeyError:使用了映射中不存在的关键字(键)时引发的关键字错误

解决方法:

①检查字典里是否存在这个key值

  

5.TypeError:类型错误,内建操作或是函数应于在错误类型的对象时会引发类型错误

解决方法:

①检查清楚数据类型是否有误

  

6.ValueError:值错误,传给对象的参数类型不正确,例如给int()函数传入了字符串数据类型

解决方法:

①弄清楚形参的数据类型

②再传对应形参的数据类型

  

7.AttributeError:属性错误,特性引用和赋值失败时会引发属性错误

解决方法:

①检查类里是否存在这个被调用的方法

②一般不能自动匹配出方法的多半有问题

  

8.IOError:输入输出错误

解决方法:

①找到代码中关于输入输出的相关操作

②检查文件路径和名称对不对

  

异常不局限于以上八中,这只是很常见的八种异常

 

三、抛出异常的几种方式?

1.try...except组合语法

(1)代码:

try:

  正常的操作

except:

  发生异常,执行这块代码

try:
    f=open("d:\\test.txt","r")
    f.read()
    print("文件读写错误")
except IOError:
    print("IO读写出错")

2.try...except...else组合语法

(1)代码:

try:

  正常的操作

except:

  发生异常,执行这块代码

else:

  如果没有异常,执行这块代码

try:
    f=open("d:\\test.txt","r")
    f.read()
    print("文件读写错误")
except IOError:
    print("IO读写出错")
else:
    print("文件写入成功")

3.try...except...except(多个异常处理)

(1)代码:

try:

  正常的操作

except A:

  发生异常A,执行这块代码

except B:

  发生异常B,执行这块代码

except:

  发生其它异常,执行这块代码

else:

  如果没有异常,执行这块代码

try:
    f=open("d:\\test.txt","r")
    f.read()
    print("文件读写错误")
except IOError:
    print("IO读写出错")
except:
    print("其他未知异常")
else:
    print("文件写入成功")

4.try...except(A,B)(一次捕获多个异常)

(1)代码:

try:

  正常的操作

except(A,B):

  发生异常A和B,执行这块代码

try:
    f=open("d:\\test.txt","r")
    f.read()
    print("文件读写错误")
except (IOError,TypeError):
    print("读取文件时出现异常")

else:
    print("文件写入成功")

5、try...except...finally组合语法

(1)代码:

try:
    代码A
except [exception] as e:
    代码B
finally:
    代码C
>>> try:
...     1/0
... except ZeroDivisionError as e:
...     print("发生了异常:错误信息如下: \n" + str(e))
... finally:
...     print("程序运行结束!!")
...
发生了异常:错误信息如下:
integer division or modulo by zero
程序运行结束!!

  

万能异常处理:-所有的异常都继承Exception

try:
    f=open("d:\\test.txt","r")
    f.read()
    print("文件读写错误")
except Exception as e:
    print("读取文件时出现异常")
    print("e的内容"+str(e))

else:
    print("文件写入成功")

 

posted @ 2021-12-24 15:16  橘子偏爱橙子  阅读(161)  评论(0编辑  收藏  举报