多个except
示例代码如下
try:
a = input("请输入被除数:")
b = input("请输入除数:")
c = float(a)/float(b)
print(c)
except ZeroDivisionError:
print("异常:除数不能为0")
except TypeError:
print("异常,除数和被除数都应该为数值类型")
except Exception as e:
print(e)
print(type(e))
代码运行结果如下
1、当输入正常数字时
2、输入除数为0
3、输入的数据不能转换为数字
try..except...else结构
示例代码如下
try:
a = input("请输入被除数:")
b = input("请输入除数:")
c = float(a)/float(b)
print(c)
except Exception as e:
print(e)
print(type(e))
else:
print('除的结果是:',c)
代码运行结果
1、无异常时
2、有异常时
try...except...finally结构
示例代码如下
try:
a = input("请输入被除数:")
b = input("请输入除数:")
c = float(a)/float(b)
print(c)
except Exception as e:
print(e)
print(type(e))
else:
print('除的结果是:',c)
finally:
print("无论程序是否有异常,我都会执行!!!")
print("程序结束")
代码运行结果(有异常时)
阅读文档中的一行文字
示范代码如下
f = open("text.txt","r",encoding="utf-8")
'''
open意为打开文件,后面第一个参数为文件存放在电脑中的位置,第二个参数r意为读取文件,第三个参数为设置编码格式
Python默认使用‘gbk’编码来解码文字
第一个参数可以是绝对路径 d:/creation/PythonStudy/Pythonproject/mypro01/text.txt(此路径根据电脑存放文件位置不同)
也可以是相对路径(此时需要读取的文件和项目在同一个位置)
'''
content = f.readline()
print(content)
代码运行结果
当有异常时(将上面代码的第三个参数删掉并执行程序)
示例代码如下
try:
f = open("text.txt","r")
content = f.readline()
print(content)
except Exception as e:
print(e)
finally:
f.close() #关闭打开的文件
print("继续执行其他的代码")
程序执行结果
with上下文管理
语法结构:
with context_expr [as var]:
语句块
示例代码如下
with open("text.txt",encoding="utf-8") as f:
for line in f:
print(line) # 实现打印多行文档内容
代码运行结果
这是一段用于测试的文字1
这是一段用于测试的文字2
这是一段用于测试的文字3
Process finished with exit code 0
自定义异常类与raise抛出异常
示例代码如下
class AgeError(Exception): #自定义异常类
def __init__(self,errorInfo):
Exception.__init__(self)
self.errorInfo = errorInfo
def __str__(self):
return str(self.errorInfo)+",年龄错误,应该在1-150之间"
if __name__ == "__main__": #如果是True,则模块是作为独立文件执行,这下面可以写测试代码
age = int(input("输入一个年龄:"))
if(age<1 or age>150):
raise AgeError(age) # 抛出异常
else:
print("正常年龄:",age)
代码运行结果
1、输入正常年龄时
2、输入错误的年龄时