python错误类型解析

python中的Error和Debugging

这是一个微软python课的笔记记录
这两个东西是完全不一样的事情,我们总把它当做是同义词,但实际上并不是。

Defining terms(定义术语)

Error handing(错误处理)

指的是当代码运行时有问题,当我把代码放到生产环境后,是无法云测的,最常见的例子比如权限问题、数据库改变和服务关闭等。这些都是无法控制的事情

Debugg(调试)

指的是我知道代码中有问题,存在出错的地方,可能会宕掉,而且我知道哪里出问题导致了代码出错

Debuging again(重申调试)

是指知道代码中存在问题,然后试图去修复,当程序外部发生一些无无法预测的事情时要使用 try,except,finally方法去解决,

Error types(错误类型)

下面是可能的错误类型
如果你的代码出现错误,选择错误类型就是很有必要的了

Syntax errors(语法错误)

代码示例:

x=42
y=206
if x==y
    print('successful')

运行结果如下:

 File "f:/workplace-vsc/one/new.py", line 3
 if x==y
        ^
SyntaxError: invalid syntax

很显然运行出现了错误,但是同时运行的错误提示也给出了,是在第3行出现的错误。提示说的是无效的语法( invalid syntax ),为什么出现这个错误呢,其实就是缺少关键的字符。

Runtimely errors(运行错误)

x=42
y=0
print(x/y)
File "f:/workplace-vsc/one/new.py", line 3, in <module>
    print(x/y)
ZeroDivisionError: division by zero

代码在运行中种出现问题,跑不了了。
这个案例的错误原因是我尝试除以0,当代码运行到地3行时,就会弹出上述错误提示信息,除以0( division by zero
在运行的时候出错,可以让我们知道错在哪,从而去调试。
1111111111111111111111111111111111111111111111111111111111
这里的基本解决错误的步骤是:
先看行号(例如:line 3)
然后找到出错的地方(例如:prrint(x/y))

:当你处理运行时错误,错误就在你代码中【而不是你使用的框架或者运行内部出现了错误,不要找错重点。。不是说没有 只是很罕见】

补:Catching runtime errors

代码:

x=42
y=0
print()
try:
    print(x/y)
except ZeroDivisionError as e:
    print('sorry,something went wrong')
else:
    print('sorry really went wrong')
finally:
    print('this always runs on success or failure')
print()

运行:

sorry really went wrong
this always runs on success or failure

其实 try ,except,finall不是用来找bug的,bug定义的。bug是我代码中出错的地方,知错不改代码就无法运行,像用户输入这种无法掌控 try except,finally就是很有用的 但是你要是知道错误在哪,就不用了

logic errors(逻辑错误)

代码:

x=206
y=42
if x<y:
    print(str(x)+'is greater than '+str(y))

运行如下:

PS F:\workplace-vsc\one> & D:/Anaconda3/envs/paddle_env/python.exe f:/workplace-vsc/one/new.py
PS F:\workplace-vsc\one> 

运行结果为空

如果在后面加一句

else:
    print(str(y)+' is greater than '+str(x))

加一句之后的娙结果:

PS F:\workplace-vsc\one> & D:/Anaconda3/envs/paddle_env/python.exe f:/workplace-vsc/one/new.py
42 is greater than 206

可以知道,是布尔值逻辑出现了错误

就先说到这里吧。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

KryHan

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值