(一) 了解异常
1. 异常
程序运行的过程中出现了错误
2. bug
bug就是指异常的意思,因为历史是因为小虫子导致计算机失灵的案例,所以延续至今,bug就代表软件出现错误
"""
例如打开一个不存在的文件
"""
f=open("D:/LINUX.txt","r",encoding="UTF-8")
![](https://i-blog.csdnimg.cn/blog_migrate/d9fe1ce704769bdb53b39cc28a800957.png)
(二) 异常的捕获方法
1. 程序出现bug后的情况
程序因为一个bug停止运行
对bug进行提醒·,整个程序继续运行
2. 为什么要捕获异常?
在可能发生异常的方法,进行捕获,当出现异常时,提供解决方式,而不是任由其导致程序无法运行
作用:提前假设某处会出现异常,做好提前准备,当真的出现异常的时候,可以有后续手段
"""
演示捕获异常
"""
#基本捕获语法
try:
f=open("C:/Users/cs/Desktop/LINUX.txt","r",encoding="UTF-8")
except:
printf("出现异常了,因为文件不存在,我将open的模式改为w的模式")#因为读不到的话 我改为w模式就可以写入这个不存在的文件,就可以读到了
f=open("C:/Users/cs/Desktop/LINUX.txt","w",encoding="UTF-8")
#捕获指定异常
try:
print(name)
except NameError as e: #这里的e是异常对象,可以用printf(e)表示出来
printf("出现了变量未定义的异常")
#捕获多个异常
try:
1/0
except (NameError, ZeroDivisionError)as e:
printf("出现了变量未定义或者除以0的异常错误")
#未设置捕获异常类型,将无法捕获异常
#捕获所有异常
try:
1/0
except Exception as e: #这句等价于 except:
printf("出现异常了")
else:
print("好高兴,没有异常")
finally:
print("finally表示的是无论是否异常都要执行的代码,例如关闭文件。")
f.close()
#其中else finally是可选择的 可以不写
(三) 异常综合案例
异常的传递性
def func1():
print("func1开始执行")
num = 1/ 0#肯定有异常,除以0的异常
print("func1结束执行")
#定义一个无异常的方法,调用面的方法
def func2():
print("func2开始执行")
func1()
print("func1开始执行")
#定义一个方法,调用上面的方法
def main():
try:
func2()
except Exception as e:
print(f"出现异常了,异常的信息是;{e}")
main()
# main会调用func2,func2会调用func1,此时func1中出现了除0异常,
# 于是就会抛到func2,func2又会被main函数调用,,所以异常是有传递性的
![](https://i-blog.csdnimg.cn/blog_migrate/04709e605bf5976a3c27fb4b90b4af28.png)
(四) Pyhton模块
"""
演示Python的模块导入
"""
# 1.使用import导入time模块使用sleep功能(函数)
import time #导入Python内置的time模块(time.py这个代码文件)
print("你好")
time.sleep(5) #通过.就可以使用模块内部的全部功能(类、函数、变量)
print("我好")
# 2.使用于from导入time的sleep功能(函数)
from time import sleep
print("你好")
sleep(5)
print("我好")
# 3.使用*导入time模块的全部功能
from time import *
print("你好")
sleep(5)
print("我好")
# 4.使用as给特定功能加上别名
import time as t
print("你好")
t.sleep(5)
print("我好")
# 或者
# from time import sleep as sl
# print("你好")
# sl(5)
# print("我好")
自定义模块
"""
演示自定义模块
"""
# 导入自定义模块使用
import my
my.test(1,2)
# 或者用from
from my import test
test(1,2)
"""
演示自定义模块
"""
# 导入不同模块的同名功能
from my import test
from my1 import test # my1里面是a-b
test(1,2) #只用了my1
![](https://i-blog.csdnimg.cn/blog_migrate/713cbd7beacb751c0d7412321cbb0324.png)
(五) Python包