Python(7):异常处理(try-except)

1.错误分类

Python 常见有两种错误:

  • 语法错误:自己的原因导致代码写错;
  • 异常:即便Python程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。

2.常见的一些python报错异常

错误代码含义
NameError名字错误
ZeroDivisionError0错误
TypeError类型错误
SyntaxError语法错误
IndexError索引超出序列范围
KeyError请求一个不存在的字典关键字
IOError输入输出错误
AttributeError尝试访问未知的对象属性

3.捕获异常

A.捕获单个异常

#捕捉单个异常,输出自己提示信息
try:
    print(eval(input('请输入数学表达式:')))#输入3/0
except ZeroDivisionError :
    print('被除数不能为0')#被除数不能为0
    
# 捕捉单个异常,输出报错提示信息
try:
    print(1/0)
except ZeroDivisionError as e:
    print(e)

B.捕获多个异常

#捕捉多个异常
#一个try和多个except或者元组结构:一个try和except(异常1,异常2...)

# 形式1
try:
    a=[1,2,3]
    print(a[6])#超出索引
    print(1/0)
except IndexError:
    print('超出索引')
except ZeroDivisionError:
    print('被除数不能为0')
    

# 形式2
try:
    a=[1,2,3]
    print(a[2])
    print(1/0)#结果:有异常啦!
except (IndexError,ZeroDivisionError):
	#弊端:不知道具体是哪个异常
    print('有异常啦!')

C.捕获所有异常

#捕捉所有异常两种格式:
#格式1:try--except
try:
    a=[1,2]
    print(a[9])
except:
    print('有异常')
    

# 格式2:try-except Exception as e:
try:
    a = [1, 2]
    print(a[9])
except Exception as e:#可以知道具体异常
    print(e)
    

# 格式3:try--except Exception:
try:
    a = [1, 2]
    print(a[9])
except Exception :#不知道具体异常
    print('111')

结果:
在这里插入图片描述
出错异常类型和捕捉的异常不一致,会出错结束

4.try-except-else-finally结构统讲代码:

#
#不管try有没有异常,最终都会只需finally的代码
try:
    print('我有错吗?')
except Exception:
    print('只要有异常,就会执行我!')
else:
    print('只有没有异常,才会执行我!')
finally:
    print('不管有没有异常,一定会执行我!')

结果:
在这里插入图片描述

5.抛出异常

A.抛出系统异常

格式描述
raise异常类型(‘描述信息’)当程序执行到raise时候,会自动的触发异常,让程序结束
#---------当程序执行到raise,会自动触发异常,让程序结束
while True:
    name=input('请输入您的名字:')
    try:
        if len(name)<3:
            raise Exception('名字太短了!')#是因为啥才跑出的异常
        else:
            print('名字还行')
            break
    except Exception as e:
        print(e)

在这里插入图片描述

B.抛出自定义异常

当程序中的异常类型不满足时,我们可以自定义类型异常

# 当程序异常类型不满足,可以自定义异常
class Myexception(Exception):
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return self.name


try:
    raise Myexception('异常消息')
except Myexception as e:
    print(e)

b = Myexception('hhh ')

在这里插入图片描述

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python 中的 try-except 语句用于捕获并处理异常。当代码执行过程中发生异常时,程序会停止执行并抛出异常信息。如果不处理这些异常,程序就会终止。因此,我们需要使用 try-except 语句来捕获并处理异常,以保证程序的正常运行。 语法如下: ```python try: # 可能会出现异常的代码块 except Exception1: # 异常类型1的处理方式 except Exception2: # 异常类型2的处理方式 else: # 如果 try 块没有抛出任何异常,则执行 else 块 finally: # 不管是否有异常发生,都会执行 finally 块 ``` try 语句块中包含可能会出现异常的代码,如果代码块中有异常抛出,则会自动跳转到相应的 except 块中进行异常处理except 块用于捕获特定类型的异常,并提供相应的处理方式。如果不指定异常类型,则会捕获所有类型的异常。可以在一个 try 语句中包含多个 except 块,以处理不同类型的异常。 else 块在 try 块没有抛出任何异常时执行,用于定义在没有异常发生时要执行的代码。 finally 块在无论是否有异常发生时都会执行,用于定义一些必须执行的代码,例如释放资源等。 Python 中常见的异常类型包括: - AttributeError:当访问对象的属性或方法不存在时抛出。 - NameError:当访问未定义的变量时抛出。 - TypeError:当操作或函数应用于不支持它的对象类型时抛出。 - ValueError:当传递给函数的参数不正确时抛出。 - ZeroDivisionError:当除数为零时抛出。 例如: ```python try: num1 = int(input("请输入一个整数:")) num2 = int(input("请输入另一个整数:")) result = num1 / num2 print("结果为:", result) except ValueError: print("请输入整数") except ZeroDivisionError: print("除数不能为零") except: print("发生了其他异常") else: print("计算完成") finally: print("程序结束") ``` 在这个例子中,我们尝试将用户输入的两个字符串转换为整数,并计算它们的商。如果输入的不是整数,会抛出 ValueError 异常;如果除数为零,会抛出 ZeroDivisionError 异常。如果发生其他异常,则会捕获所有异常。如果没有异常发生,则打印计算结果。不管有没有异常发生,都会打印“程序结束”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张烫麻辣亮。

谢谢老板支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值