python中nameerror怎么处理_Python 中的错误和异常,遇到了怎么处理?

@Author:BY Runsen

在Python 中的错误和异常是什么?

37d12f2eb9389b50100dd24b06237edbe6116ed1.jpeg?token=768a403040fa4ee55edb807526a2c592

通常来说,程序中的错误至少包括两种,一种是语法错误,另一种则是异常。所谓语法错误,你应该很清楚,也就是你写的代码不符合编程规范,无法被识别与执行,比如下面这个例子的语法错误

下面的代码无法被识别和执行

if name is not None

print(name)

If 语句漏掉了冒号,不符合 Python 的语法规范,所以程序就会报错invalid syntax。

异常则是指程序的语法正确,也可以被执行,但在执行过程中遇到了错误,抛出了异常

10 / 0

Traceback (most recent call last):

File "", line 1, in

ZeroDivisionError: integer division or modulo by zero

order * 2

NameError: name 'order' is not defined

1 + [1, 2]

TypeError: unsupported operand type(s) for +: 'int' and 'list'

常见的报错是ZeroDIvision NameError 和 typeError

还有很多其他异常的类型如keyError 字典的键找不到和FileNotFoundError 文件不存在

如何处理异常,通常是用try except来解决

try:

s = input('please enter two numbers separated by comma: ')

num1 = int(s.split(',')[0].strip())

num2 = int(s.split(',')[1].strip())

...

except ValueError as err:

print('Value Error: {}'.format(err))

print('continue')

如果我们输入a,b,程序便会抛出异常invalid literal for int() with base 10:'a'

please enter two numbers separated by comma: a,b

Value Error: invalid literal for int() with base 10: 'a'

continue

大型社交网站的后台,需要针对用户发送的请求返回相应记录。用户记录往往储存在 key-value 结构的数据库中,每次有请求过来后,我们拿到用户的 ID,并用 ID 查询数据库中此人的记录,就能返回相应的结果。而数据库返回的原始数据,往往是 json string 的形式,这就需要我们首先对 json string 进行 decode(解码),你可能很容易想到下面的方法:

import json

raw_data = queryDB(uid) # 根据用户的 id,返回相应的信息

data = json.loads(raw_data)

上面的代码是不是就足够呢?

json.loads()函数中,如果输入的字符串不符合规范,那么就无法解码,就会抛出异常

因此写之前就应该考虑如何处理异常

data = json.loads(raw_data)

....

except JSONDecodeError as err:

print('JSONDecodeError: {}'.format(err))

0df431adcbef7609b8e2ca98aecb38ca7dd99eed.jpeg?token=e8c8eb8e6db98f249703ba42cacf5e84

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值