python:关于异常,你需要知道什么。

摘要
  • 异常的完整语法
  • 主动抛出异常
  • 自定义异常
  • raise from语句
异常的完整语法
try:
    # 提示用户输入一个整数
    num = int(input("请输入一个整数:"))
    # 使用数字8除以这个整数并且输出
    result = 8 / num
    print(result)
except ValueError:  # 捕获特定异常(也可以继续添加 as b)
    print("请输入正确的整数")
	print("可以继续执行的代码")  # 可以继续执行的代码
except Exception as a: # 捕获未知异常赋值给a
    print("未知错误%s" % a)
    print("可以继续执行的代码")  # 可以继续执行的代码
else:  # 尝试执行的代码正确时会执行的代码
    print("这个语法是正确的")
finally:  # 不管怎样都会执行的代码
    print("不管怎样都会执行的代码")

  • 补充:
    1,如果想将小数转化为整数的时候但不仅限于int的“退一法”的时候,可以用round()函数。
    2,异常中的关键字顺序是固定的。
主动抛出异常
def input_password():
    pwd = input("请输入密码:")
    if len(pwd) <= 8:
        ex = Exception("密码长度不够")
        raise ex
        print("raise之后的代码")
    return pwd

try:
    print(input_password())
except Exception as a:
    print(a)
finally:
    print("程序终止,请再次启动")    
自定义异常类
# 通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。

# 以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。

# 在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。


class Networkerror(RuntimeError):  # 继承一般运行错误的类
    def __init__(self, cq):
        self.cq = cq
        # print(self.cq)
        
        
# 在你定义以上类后,你可以触发该异常,如下所示:
try:
    raise Networkerror("错误")   # 直接抛出异常
    
# 等于except Exception as e:
except Networkerror as e:   # 捕获异常
    print(e)  # 等于print(e.cq)

关于raise from语句
  • raise from 相对于 raise而言具有“溯源”特性,具体可参考:raise与raise from
补充,主动抛出异常的应用场景:
  • 处理解释器不知道的未知异常(也就是说你想怎样抛异常就怎样抛异常)。
  • 定制特定的特性(一般写抽象类的时候用的多)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值