Python基础语法(十二)

本文详细介绍了Python中的异常处理机制,包括基本的try-except结构,如何捕获特定类型的异常,如何使用else和finally子句,以及如何传递和自定义异常。通过实例演示了异常处理在实际编程中的应用。

1. 写法

  1. 语法
    try:
        可能发生异常的处理
    except:
        出现异常执行的处理
    
  2. 示例
    try:
        file = open("text.txt", "r")
    except:
        print("文件不存在")
    
    # 输出结果
    文件不存在
    

2. 异常捕获

  1. 捕获指定异常
    1. 注意
      1. 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
      2. 一般try下方只放一行尝试执行的代码。
    # 语法
    try:
        可能发生异常的处理
    except 异常类型:
        如果捕获到该异常类型执行的处理
    
    # 示例
    try:
        print(name)
    except NameError:
        print("变量未定义")
    
    # 输出结果
    变量未定义
    
  2. 捕获多个指定异常
    try:
        print(name)
    except (NameError, ZeroDivisionError):
        print("有错误")
    
    # 输出结果
    有错误
    
  3. 捕获异常描述信息
    try:
        print(name)
    except (NameError, ZeroDivisionError) as rst:
        print(rst)
    
    # 输出结果
    name 'name' is not defined
    
  4. 捕获所有异常
    1. Exception是所有程序异常类的父类。
    try:
        print(name)
    except Exception as rst:
        print(rst)
    
    # 输出结果
    name 'name' is not defined
    

3. 异常的else:如果没有异常要执行的代码

try:
    print(1)
except Exception as rst:
    print(rst)
else:
    print("正常终了")

# 输出结果
1
正常终了

4. 异常的finally:无论是否异常都要执行的代码,例如关闭文件。

try:
    print(1)
except Exception as rst:
    print(rst)
else:
    print("else执行")
finally:
    print("finally执行")

# 输出结果
1
else执行
finally执行

5. 命令行执行python文件

python3 *.py

6. 异常的传递

# 从外层的try传递到内层的try
try:
    print(1)

    try:
        print(name)
    except Exception as rst:
        print(rst)

except:
    print("异常终了")

# 输出结果
1
name 'name' is not defined

7. 自定义异常

  1. 抛出自定义异常的语法
    raise 异常类对象
    
  2. 示例
    class PwdInputError(Exception):
        def __init__(self):
            self.err = "密码不正确!"
    
        def __str__(self):
            return self.err
    
    
    def main():
        try:
            con = input("Please input your password: ")
            if con != "123456":
                raise PwdInputError()
        except Exception as rst:
            print(rst)
    
    
    main()
    
    # 输出结果
    Please input your password: 124
    密码不正确!
    
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值