Python异常处理
同绝大多数语言一样(Java、C++、PHP等),Python也有异常处理的机制
什么是异常(Exception)
错误分几种:
- 语法错误:可以在编码阶段就修改的错误
- 逻辑错误:也是可以通过代码本身来解决的错误
- 异常(运行时错误)意外的情况,无法单纯通过代码来处理(例如:用户输入错误、断网了、磁盘空间不足)
本质上,异常是操作系统发送的信号,所以并不是所有情况都能通过异常处理
异常处理
python通过 try...except...
处理异常
try:
#可能产生异常的代码
except <异常类型1>:
#处理异常的代码
except < 异常类型2 >:
# 处理异常的代码
....
看个例子
try:
num1=int(input('请输入一个数字:'))
num2=int(input('请输入一个数字:'))
result=num1+num2
print("数字之和是:" + str(result))
except ValueError:
print("你输入有误")
工作流程
1.首先,try中的代码被执行
2.如果没有错误发生,except中的代码不会执行
3.如果异常发生,则结束try 中的代码到剩余代码不会执行
4.进入对应的except 中执行
抛出异常+创建自己的异常类
你可以主动触发异常,这在大型项目中是一种非常有用的技巧
raise 异常对象
系统提供的异常往往是很模糊的,如ValueError。所以可以自己定义更加具体的异常类
class AgeError(RuntimeError): # 自定义异常,都是RuntimeError的子类
__msg = ''
def __init__(self, msg):
super().__init__()
self.__msg = msg
def __str__(self):
return self.__msg
def get_user_age():
try:
age = int(input("请输入您的年龄:"))
except ValueError as e:
raise e
if age < 0 or age > 200:
# raise ValueError("年龄太大或太小")
raise AgeError('年龄太大或太小')
return age
age = get_user_age()
print('年龄:' + str(age))
Python 模块
模块化是所有高级语言的重要特性,也是构建大型项目的基础
创建模块
python中,每一个py文件都是一个模块,文件中的变量、函数和类就是模块的成员
#mod.py
name='mod'
def show():
print(name)
#main.py
import mod
print(mod.name)
mod.show()
from import语句
可以把引入的成员直接转变成全局变量和函数
dir()方法
用于查看模块、类的全部成员
嵌套写法
import time
try:
f = open("123.txt", 'r') #当该文件存在与不存在有不同的结果
try:
while True: # 对于该文件每隔两秒逐行打印
content = f.readline()
if len(content) == 0:
break
time.sleep(2)
print(content)
finally:
f.close()
print("文件关闭")
except Exception as result:
print(result)