python基础____异常

本文详细介绍了Python中的异常处理机制,包括异常定位、try-except语句的使用、异常处理流程控制、自定义异常以及在PyCharm中进行调试的方法。通过实例展示了如何优雅地捕获和处理各种运行时错误,确保程序的稳定性和健壮性。
摘要由CSDN通过智能技术生成

1 异常解决的关键:定位

a=3/0

结果为

C:\anaconda\python.exe D:/PycharmProjects/student/mypy06.py
Traceback (most recent call last):
  File "D:/PycharmProjects/student/mypy06.py", line 9, in <module>
    a=3/0
ZeroDivisionError: division by zero

Process finished with exit code 1

该异常的第一句C:\anaconda\python.exe 为解释器的位置
第二句为D:/PycharmProjects/student/mypy06.py,是哪个项目的哪个文件出错.
第三句,Traceback (most recent call last):溯源最后一次调用,可以看到是哪一句出现问题.
第四句,ZeroDivisionError: division by zero,为具体异常类型.
一般解决步骤为查找第四句,寻找解决的方法.

2 try-except语句块
try:
(可能发生异常的语句块)
except:
(发生异常时的处理方法)

try:
    print('step0')
    a=3/0
    print(('step1'))
except BaseException as e :
    print('step2')
    print(e)
    print(type(e))

结果为

step0
step2
division by zero
<class 'ZeroDivisionError'>

可以看出step1被跳过.

while True:
    try:
        x=int(input('请输入一个数字(输入88结束程序):'))
        print('输入的数字为:',x)
        if x==88:
            print('输入结束')
            break
    except:
        print('发生异常,请输入一个数字')
print('程序运行结束')

结果如下:

请输入一个数字(输入88结束程序):23
输入的数字为: 23
请输入一个数字(输入88结束程序):aaaa
发生异常,请输入一个数字
请输入一个数字(输入88结束程序):23231
输入的数字为: 23231
请输入一个数字(输入88结束程序):adsads
发生异常,请输入一个数字
请输入一个数字(输入88结束程序):88
输入的数字为: 88
输入结束
程序运行结束

3 一个try_多个except
在except中,子类在父类前,父类一般作为兜底使用.

try:
    x=input("请输入一个被除数:")
    y=input("请输入一个除数:")
    z=float(x)//float(y)
except ZeroDivisionError:
    print('0不能做除数')
except ValueError:
    print('输入的不是两个数字')
except NameError:
    print('变量不存在')
except BaseException as e:
    print(e)

结果为:

请输入一个被除数:1
请输入一个除数:aa
输入的不是两个数字

可以看出BaseException放在最后.

4 try _except_else
有异常执行except后的语句块
没有异常则执行else后的语句块.

5 try_except_finally语句
finally后的语句块无论发生异常与否都会被执行.

try:
    x=input("请输入一个被除数:")
    y=input("请输入一个除数:")
    z=float(x)/float(y)
except BaseException as e:
    print(e)
else:
    print(z)
finally:
    print('无论如何都执行')

结果如下:

请输入一个被除数:1
请输入一个除数:0
float division by zero
无论如何都执行

6 注意return语句不要放在try,except,else或者finally中,一般放在程序最后
7 with 上下文管理
with 要执行操作 as 名称:
语句块
在执行完with语句块之后,打开的资源会自动关闭,释放资源.
不需要再通过finally语句释放资源.

with open("d:/PyCharm.txt",'r',encoding='UTF-8')as f:
    content=f.readlines()
    print(content)

['121324352\n', '李恒宇\n', '嘟嘟嘟']

8 自定义异常

#自定义异常
class AgeError(Exception):
    def __init__(self,errorInfo):
        Exception.__init__(self)
        self.errorInfo=errorInfo
    def __str__(self):
        return (str(self.errorInfo)+'年龄异常,请输入1-150')#注意这里是return


##########测试代码#########
if __name__=="__main__":#如果为True,则文件作为独立文件运行,可以执行测试代码
    age=int(input("请输入一个年龄:"))
    if age<1 or age>150:
        raise AgeError(age)
    else:
        print(age,'是正常的年龄')

结果为

请输入一个年龄:200
Traceback (most recent call last):
  File "D:/PycharmProjects/student/mypy06.py", line 76, in <module>
    raise AgeError(age)
__main__.AgeError: 200年龄异常,请输入1-150

9 pycharm开发环境调试
在这里插入图片描述
核心为设置断点.
用debug模式进入调试模式.

在这里插入图片描述
在方框中输入变量名,可以观察变量的变化情况.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值