整体文章目录
一、 当前章节目录
二、异常的处理
2.1 Python中的异常
2.2 try…except的使用
try:
open("hello.txt", "r") # 尝试读取一个不存在的文件
print("读文件")
except FileNotFoundError: # 捕获FileNotFoundError异常
print("文件不存在")
except: # 其他异常情况
print("程序异常")
运行结果:
文件不存在
try:
result = 10/0
except ZeroDivisionError: # 捕获除数为0的异常
print("0不能被整除")
else: # 若没有触发异常则执行以下代码
print(result)
运行结果:
0不能被整除
try:
s = "hello"
try: # 嵌套异常
print(s[0] + s[1])
print(s[0] - s[1])
except TypeError:
print("字符串不支持减法运算")
except:
print("异常")
运行结果:
he
字符串不支持减法运算
2.3 try…finally的使用
# finally错误的用法
# try:
# f = open("hello.txt", "r")
# print("读文件")
# except FileNotFoundError: # 捕获FileNotFoundError异常
# print("文件不存在")
# finally: # 其他异常情况
# f.close()
try:
f = open("hello.txt", "r")
try:
print(f.read(5))
except:
print("读取文件错误")
finally: # finally子句一般用于释放资源
print("释放资源")
f.close()
except FileNotFoundError:
print("文件不存在")
运行结果:
文件不存在
2.4 使用raise抛出异常
try:
s = None
if s is None:
print("s是空对象")
raise NameError
print(len(s))
except TypeError:
print("空对象没有长度")
运行结果:
s是空对象
NameError
2.5 自定义异常
from __future__ import division # 导入division模块
class DivisionException(Exception): # 自定义异常
def __init__(self, x, y):
Exception.__init__(self, x, y)
self.x = x
self.y = y
if __name__ == "__main__":
try:
x = 3
y = 2
if x % y > 0:
print(x / y)
raise DivisionException(x, y) # 抛出异常
except DivisionException as div:
print("DivisionException: x / y = %.2f" % (div.x / div.y))
运行结果:
1.5
DivisionException: x / y = 1.50
2.6 assert语句的使用
t = ("hello",)
assert len(t) >= 1
t = ("hello")
assert len(t) == 1
运行结果:
AssertionError
# 带message的assert语句
month = 13
assert 1 <= month <= 12, "month errors"
运行结果:
AssertionError: month errors
2.7 异常信息
def fun(): # 定义除法运算函数
a = 10
b = 0
return a / b
def format(): # 定义格式化输出函数
print("a / b = " + str(fun()))
if __name__ == "__main__":
format()
运行结果:
ZeroDivisionError: division by zero
import sys
try:
x = 10 / 0
except Exception as ex:
print(ex)
print(sys.exc_info())
运行结果:
division by zero
(<class ‘ZeroDivisionError’>, ZeroDivisionError(‘division by zero’), 0x0000024789D33B00>)
三、使用自带IDLE调试程序
def fun():
a = 10
b = 0
return a / b
def fot():
print("a / b = " + str(fun()))