python异常处理基本知识

异常处理

首先明确异常不等于错误
异常是用户没有按照我们的预期进行操作,错误是直接报错的内容
标准模式用伪代码块展示如下

try:
    [代码块A]#可能会出现错误的代码 			#异常检测
except Exception1[ as e]:#except用于捕捉异常
    #异常处理
    [代码块1]
···
except Exceptionn[ as e]:
    #异常处理
    [代码块n]
[else:]
#可选,如果没有引发异常会执行         处理语句
[finally :]
    #无论如何都要执行的语句            处理语句
    #后续语句

常见错误分类

NameError

pldknt()#函数名拼写错误
a="d"
print(aa)#变量名拼写错误
print(b)#使用了一个不存在的变量

SyntaxError

if "q"=="按顺序"#未写冒号的格式错误
print()#未缩进的IndentationError

TypeError

print(3+"2")#类型
tp=(1,2,3)
tp[2]=4
print(tp)#把列表的索引修改方式用在了元组上

AttributeError

tp=(1,2,3)
tp.append(4)
print(tp)#属性错误,用了列表的方法

KeyError

用了字典取不到的键

IndexError

能用索引的类型超出了索引范围

ZeroDivisionError

除数为零

ValueError

这个异常表明传入的参数值存在问题,通常是因为该值与期望的类型、范围或其他条件不匹配

try语句

这串代码是个标准的try模式

try:
    n=int(input("请输入一个数字"))
    n=5/n
    print(n)
except ZeroDivisionError as e:#as e可以不写,它的作用是记录下报错信息,同时给异常取了个别名
    print("除数不能为0")
    print("原始报错信息",e)
except :#如果输入的不是数字会进入这里
    print("请输入一个数字")
else:
    print("没有异常进入else模块")
finally:
    print("无论如何都会执行的finally模块")

finally通常是写释放资源、关闭文件、关闭数据等内容
当方法遇到异常又不知如何处理时就需要抛出异常

raise

有的时候,用户输入的信息可能没有问题,但不太符合我们的要求,我们需要扮演系统的角色主动向用户指出错误
就像有的行为“法律允许,但不提倡”
比如有的时候用户密码太简单了或长度太短了这种情况,我们当然可以用一个if else语句解决

pwd=input()
if len(pwd)<8:
    print("")
else:
    print("登录成功")

但是在实际开发中,我们为了便于后续维护等,我们需要把异常处理的情况交给专门做这件事的模块统一处理

try:
    pwd=input()
    if len(pwd)<8:
        raise Exception("请输入8位以上的密码")#抛出异常
except Exception as e:#给异常取个名字
    print(e)#打印“请输入8位以上的密码”

错误处理

  1. 运行,从报错信息找
  2. 打印断点和相关信息
for i in range(10):
    for i in range(5):
        print("*"*i)

这串代码把i混用了,打印出来了如下图案


*
**
***
****

*
**
***
****

*
**
***
****

*
**
***
****

*
**
***
****

*
**
***
****

*
**
***
****

*
**
***
****

*
**
***
****

*
**
***
****

我们可以通过设置断点找出错误,如

for i in range(10):
    print("-"*30)
    print(i)
    for i in range(5):
        print("neicengcxunhuan")
        print(i)
        print("*"*i)
  1. 用注释一点点排查
  2. 调试
  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值