python基础知识⑧—try..except语句,finally语句,traceback模块,with语句,raise语句,自定义error

#异常监控
try :
    "可能发生异常的代码"

except BaseException as e: #捕获异常,将异常赋值给e
    "发生异常后执行的代码"
# 举例:
try:
    print("5")
    print(1/0)
except ZeroDivisionError:
    print("除数不能为0")

#多个except语句
try:
    "可能发生异常的代码"
except ZeroDivisionError: #捕获异常,将异常赋值给e # type: ignore
    "发生异常后执行的代码"
except ValueError: #捕获异常,将异常赋值给e # type: ignore
    "发生异常后执行的代码"
except NameError: #捕获异常,将异常赋值给e # type: ignore
    "发生异常后执行的代码"

# else语句
try:
    "可能发生异常的代码"
except ZeroDivisionError:
    "发生异常后执行的代码"
else:
    "没有异常时执行的代码"

# finally语句
try:
    "可能发生异常的代码"
except ZeroDivisionError:
    "发生异常后执行的代码"
else:
    "没有异常时执行的代码"
finally:
    "不管有没有异常都会执行的代码"

#return不放在try except,else,finanlly中,因为return会终止函数的执行

# with语句 包含在进入上下文时需要执行的初始化工作和在退出上下文时需要执行的清理工作
with open("test.txt","r") as f:
    print(f.read())
# with语句会自动关闭文件,不需要手动关闭

# traceback 模块 用来跟踪异常返回信息
import traceback
try:
    print("5")
    print(1/0)
except ZeroDivisionError:
    traceback.print_exc()

# raise语句 主动抛出异常
try:
    raise ZeroDivisionError("除数不能为0")
except ZeroDivisionError as e:
    print(e)

#自定义异常
class ageException(Exception): 
    def __init__(self,errormsg):
        Exception.__init__(self,errormsg)
        self.errormsg = errormsg
    def __str__(self):
        return "年龄为:"+self.errormsg+",年龄不能为负数"

if __name__ == "__main__": #如果为主模块,则执行以下代码
    age = int(input("请输入年龄:"))
    if age < 0:
        raise ageException(str(age))
    else:
        print("年龄为:",age)
      



#常见异常
# ZeroDivisionError 除数为0
# NameError 未声明/初始化对象
# TypeError 不同类型间的无效操作
# ValueError 传入无效的参数
# FileNotFoundError 文件未找到
# IndexError 索引超出范围
# KeyError 字典中不存在指定的键
# AttributeError 对象没有这个属性
# SyntaxError 语法错误
# IndentationError 缩进错误
# ImportError 导入模块失败
# ModuleNotFoundError 模块未找到
# IOError 输入输出错误
# OSError 操作系统错误
# KeyboardInterrupt 用户中断执行
# EOFError 输入结束
# StopIteration 迭代器没有更多的值
# AssertionError 断言错误
# UnboundLocalError 访问未初始化的本地变量
# RecursionError 递归错误
# MemoryError 内存错误
# SystemError 解释器系统错误
# FloatingPointError 浮点数错误
# OverflowError 数值运算超出最大限制
# TimeoutError 操作超时
# ConnectionError 连接错误
# ArithmeticError 算术错误
# BufferError 缓冲区错误
# LookupError 查找错误
# ReferenceError 引用错误
# UnicodeError Unicode错误
# WindowsError Windows错误
# Warning 警告
# DeprecationWarning 弃用警告
# FutureWarning 未来警告
# UserWarning 用户警告
# SyntaxWarning 语法警告
# RuntimeWarning 运行时警告
# ImportWarning 导入警告
# UnicodeWarning Unicode警告
# BytesWarning 字节警告
# ResourceWarning 资源警告
# PendingDeprecationWarning 待弃用警告
# SyntaxWarning 语法警告

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字生命Allen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值