Python的错误和异常处理

错误和异常

错误和异常如何区分

错误Error是程序中可以预知的情况,所以会故意设置一个错误,用于输出设置好的错误的情况
异常Exception是程序中无法预知的情况,所以会抛出一个异常

以除法函数为例:
1.异常

def div(a,b):
    if b == 0:
        raise Exception("被除数不能为0")  #这是异常
    return a/b

def cal():
    a = int(input())
    b = int(input())
    div(a,b)
    #此处为其他代码逻辑
cal()
    #如果这样,终端里输入被除数0,程序会直接抛异常,就不会执行下面的代码逻辑了

解决:捕获异常

def div(a,b):
    if b == 0:
        raise Exception("被除数不能为0")  #这是异常
    return a/b

def cal():
    a = int(input())
    b = int(input())
    try:
        div(a,b)
    except Exception as e:
        print(e)
    #此处为其他代码逻辑
cal()
#这样即使输入被除数0,程序也会继续执行后面的代码逻辑,只是输出一个异常的提示字符串

可以把下面的代码放入while循环,输入错误也能重新输入

def div(a,b):
    if b == 0:
        raise Exception("被除数不能为0")  #这是异常
    return a/b

def cal():
    while 1:
        a = int(input())
        b = int(input())
        try:
            div(a,b)
        except Exception as e:
            print(e)
        #此处为其他代码逻辑
cal()

2.错误

def div(a,b):
    if b == 0:
        return None, "被除数不能为0"  #这就是错误

    return a/b, None

def cal():
    while 1:
        a = int(input())
        b = int(input())
        v,err = div(a,b)   #v和err用于接受div函数return的两个结果
        if err is not None:  
        #由于None是全局唯一的对象,所以当把None赋值给某个值的时候要用`is`,而不是`==`
        #如果用`=`,会报错; 如果用`==`,只会返回'None'这个字符串
            print(err)
        else:
            print(v)
cal()

但有些情况会把异常当作错误处理,在需要抛异常的时候却没抛异常,让程序继续执行了

import re
desc = "age:18"
a = re.match("ages:(.*)",desc)  #ages在这里并不存在
if a is not None:
    print(a.group(1))
#但是程序不会抛异常,因为正则表达式默认是会存在匹配不到的情况,默认这不是异常
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的错误异常处理是通过try-except语句实现的。当程序运行到try语句块中的代码时,如果发生错误Python会跳过try语句块中的代码,并执行except语句块中的代码。 例如: ``` try: # 代码块 except Exception as e: # 异常处理 ``` 在这个例子中,如果try语句块中的代码出现了异常Python会跳过这个代码块,并执行except语句块中的代码。Exception是一个基本的异常类,它可以捕捉所有类型的异常。e是异常对象,它包含了错误信息。 以下是一个完整的例子,展示了如何处理文件读取错误: ``` try: with open('file.txt', 'r') as f: data = f.read() except FileNotFoundError: print('文件不存在') except: print('文件读取错误') ``` 在这个例子中,try语句块中的代码尝试打开一个名为file.txt的文件,并读取其中的数据。如果文件不存在,程序会跳过try语句块中的代码,并执行第一个except语句块中的代码,输出“文件不存在”;如果文件读取出错,程序会跳过try语句块中的代码,并执行第二个except语句块中的代码,输出“文件读取错误”。 除了上述的基本异常类之外,Python还提供了许多其他的异常类,如ValueError、TypeError、NameError等等,可以根据实际需要进行选择。同时,也可以使用多个except语句块来处理不同的异常类型,或者使用一个except语句块来捕捉所有类型的异常

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值