异常的处理--day27

异常的处理

"""
异常可以由 发生的时间不同分为两类
1.语法检测异常
解释器在执行代码前会先检测语法 检测通过才会开始执行
如果这个阶段发生了异常 代码一行都不会执行
语法错误 和 缩进错误
这种低级错误 就别问了
2.运行时异常
已经通过了语法检测 在解析执行期间发生的异常
"""
"""
异常可以由 发生的时间不同分为两类
1.语法检测异常
解释器在执行代码前会先检测语法 检测通过才会开始执行
如果这个阶段发生了异常 代码一行都不会执行
语法错误 和 缩进错误
这种低级错误 就别问了
2.运行时异常
已经通过了语法检测 在解析执行期间发生的异常

"""

"""
完整的书写顺序
try
except
else
finally
"""
# 你需要掌握的语法
"""
1.
try:
except:#捕获单个出错的类型

2.
try:
except:
finally: #无论是否发生异常 最后都会执行finally中的代码
"""
# 正确使用异常处理
"""
1.如果能明确知道异常发生原因 就不要产生异常 使用if判断等方式
2.不知道异常发生的原因 但是知道异常的类型 那就明确捕获该类型的异常
3.不知道发生原因 也不知道 异常的类型 可以使用万能异常 但是一定要打印异常消息
"""
li = []
# # 语法1
# try:
# # 把可能发出错误的代码放到try中
# print("start")
# # a = int("abc")
# li[1]
# print("over")
#
# except ValueError:
# # 当try中真的发生了错误 就会执行 except中的代码
# # 在这里可以做一些补救措施
# print("发生了 ValueError异常")
#
# print("over")

# # 语法2 except可以有多个
# try:
# # 把可能发出错误的代码放到try中
# print("start")
# a = int("abc")
# li[1]
# print("over")
#
# except ValueError:
# # 当try中真的发生了错误 就会执行 except中的代码
# # 在这里可以做一些补救措施
# print("发生了 ValueError异常")
# except IndexError:
# print("发生了 IndexError 索引不正确")
# print("over")

# 语法4 万能异常 Exception类 尽量少用 可能会导致 程序既不报错 也不正常运行 无法定位错误位置
# try:
# # 把可能发出错误的代码放到try中
# print("start")
# # a = int("abc")
# # li[1]
# 10 / 0
# dic = {}
# dic["name"]
# print("over")
#
# except Exception:
# print("可能是任何类型的错误 反正是发生错误了")
# print("over")

# 语法5 万能异常 Exception类 建议 输出异常的值
# try:
# # 把可能发出错误的代码放到try中
# print("start")
# # a = int("abc")
# # li[1]
# 10 / 0
# dic = {}
# dic["name"]
# print("over")
#
# # 可以通过给异常取别名 来获取异常的对象 对象中包含了错误信息
# except Exception as e:
# print("可能是任何类型的错误 反正是发生错误了")
# print(e)
# print(type(e))
# print("over")

# # 语法6 先捕获能够明确的异常类型 最后捕获万能异常类型
# try:
# # 把可能发出错误的代码放到try中
# print("start")
# # a = int("abc")
# # li[1]
# # 10 / 0
# dic = {}
# dic["name"]
# print("over")
# except ValueError:
# print("值不对.....")
# except ZeroDivisionError:
# print("除数不能为0")
# # 可以通过给异常取别名 来获取异常的对象 对象中包含了错误信息
# except Exception as e:
# print("可能是任何类型的错误 反正是发生错误了")
# print(e)
# print(type(e))
#
# print("over")


# 语法7 try except else
# try:
# # 把可能发出错误的代码放到try中
# print("start")
# # a = int("abc")
# # li[1]
# # 10 / 0
# dic = {}
# # dic["name"]
# print("over")
# except ValueError:
# print("值不对.....")
# except ZeroDivisionError:
# print("除数不能为0")
# # 可以通过给异常取别名 来获取异常的对象 对象中包含了错误信息
# except Exception as e:
# print("可能是任何类型的错误 反正是发生错误了")
# print(e)
# print(type(e))
# else: #当没有发生异常会执行else 只能except的后面
# print("执行了else")
# print("over")

# 语法8 try except finally
# try:
# # 把可能发出错误的代码放到try中
# print("start")
# # a = int("abc")
# # li[1]
# # 10 / 0
# dic = {}
# # dic["name"]
# print("over")
# except ValueError:
# print("值不对.....")
# finally: #无论是否发生异常 最后都会执行finally中的代码
# print("finally")
# print("over")


import io
# finally的使用场景 可以用finally来执行一些清理操作 类似__del__
try:
print("start")
f = open("1.今日内容","rt",encoding="utf-8")
f.read()
print("end")
except FileNotFoundError:
print("文件路径错误...")
except io.UnsupportedOperation:
print("文件不能被写入....")
finally:
f.close()


print(f.closed)

猜你喜欢

转载自www.cnblogs.com/wenchen/p/10149575.html