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

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

就先说到这里吧。

发布了20 篇原创文章 · 获赞 2 · 访问量 857

猜你喜欢

转载自blog.csdn.net/qiyihan/article/details/104920003