python基础之文件处理、异常处理、代码调试

2019-09-24  本文已影响0人  DayBreakL

文件处理

异常处理

异常:在运行代码过程中的任何错误,带error字样的都是异常

异常处理:我们对代码中可能会遇到的异常进行处理

我们为什么要处理异常?

友好的异常,遇到异常可以继续执行后面的代码

不友好的异常,遇到异常就卡死、崩溃

1.try...except...

import os
# 创建已存在的目录
os.mkdir("relics")
print("能执行到我吗?")

会报错:FileExistsError: [Errno 17] File exists:

'relics',且代码后的print不会执行,这样就是不友好的异常。

import os
try: #相当于警察
    os.mkdir("relics")  #嫌疑人,可能会出错的代码
except FileExistsError: # FileExistsError类型的异常,警力出动
    print("出了FileExistsError类型的错误") #抓捕归案
    
print("能执行到我吗?")

使用了try...except...后控制台的输出是:

出了FileExistsError类型的错误
能执行到我吗?

except后面可以指定异常类型,这样只有是该类型的异常时才会进行异常处理,如果不是该类型的异常,还是会报错,后面的代码仍然无法执行。

except后面可以使用Exception,表示无论什么类型的异常,都可以进行异常处理。

import os
try: #相当于警察
    os.mkdir("relics")  #嫌疑人,可能会出错的代码
except Exception: #任何类型的异常,警力出动
    print("出了FileExistsError类型的错误") #抓捕归案

print("能执行到我吗?")

捕捉到异常只是初级,进阶的方式,需要对异常进行处理,将错误的信息存储起来

import os
import shutil
try:
    os.mkdir("relics")
except Exception as e: #把异常信息存储到变量e
    print("错误信息是:{}".format(e))
    file=open("error.txt","a+")
    file.write(str(e)) #把错误信息写到文件中
    file.close() #关闭文件
print("能执行到我吗?")

参考:Python标准异常类

2.try...except...finally

无论前面有没有捕捉到异常,finally后面的代码都能执行

import os
try:
    os.mkdir("relics")
except IndexError as e: #故意写一个其他的类型的异常
    print("错误信息是:{}".format(e))
    file=open("error.txt","a+")
    file.write(str(e))
    file.close() #关闭文件
finally: # 就算上面报错了,后面的代码也能继续执行
    print("不管报不报错,肯定能执行到我")

控制台输出是:

Traceback (most recent call last):
  File "/Users/leitianxiao/PycharmProjects/python11/py_0906/do_file.py", line 6, in <module>
不管报不报错,肯定能执行到我
    os.mkdir("relics")
FileExistsError: [Errno 17] File exists: 'relics'

3.try...except...else

else后面的代码是跟try后面的代码一起的,try好它也好。try中的代码不报错,else后面的代码就执行,try中的代码报错,else后面的代码就不执行。

try:
    os.mkdir("relics")
except Exception as e: #把异常信息存储到变量e
    print("错误信息是:{}".format(e))
    file=open("error.txt","a+")
    file.write(str(e))
    file.close() #关闭文件
else: # 就算上面报错了,后面的代码也能继续执行
    print("try后面代码,不报错才执行我")

代码调试

以后讲

上一篇 下一篇

猜你喜欢

热点阅读