您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
Python中什么情况下需要考虑异常处理?
异常,函数,代码Python中什么情况下需要考虑异常处理?
发布时间:2020-12-06加入收藏来源:互联网点击:
Python中什么情况下需要考虑异常处理?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
这个问题要结合案例来细说。
初学者在初学python时很少会考虑异常处理的情况。因为在这个阶段写的程序规模都不大,影响程序运行的变量存在变化小、可预判的特点可能性,基本上代码跑几遍,遇到报错再做预判处理,之后也无需异常处理。简单的案例如下:
def sum(a,b):
return a+b
有时候给这个sum函数传参时一个是数字型1,另一个是字符串'20',如:
sum(1,'20')
此时会报错如下:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
多数初学者发现这样的错误都会做下面这样的处理:
def sum(a,b):
return int(a)+int(b)
再运行sum(1,'20')就不会报错了。
可是随着编写程序规模越来越大,尤其是多人合作的项目或者是网络项目会产生新的问题。
假设你写了上面这个sum(a,b)的函数,另外一个程序员去调用,他只知道这个是sum函数,可以让两个数相加,可是他并没有细看内部的代码,造成他这样调用sum(1.8,2.8)返回结果是3,可想而知运算结果是错的。所以上述sum函数编写不够谨慎。
再比如,在网络项目中,做对数据库删除记录的操作,由于存在多人访问数据库的清空,假设你的页面尚未刷新,另一个用户删除一条记录,此时你也想删除此记录,就会造成报错,因为要删除的记录已不存在。这种情况在单用户使用的项目时不会遇到,但是多用户使用的项目必须考虑周到。
以下是我写的一个删除记录的函数示例:
def del_book(request, book_id):
try:
models.Book.objects.get(id=book_id).delete()
except ObjectDoesNotExist:
return HttpResponse('该记录已不存在!')
return redirect('books')
所以在什么情况下需要考虑异常处理呢,这个问题没有完美解答,需要具体情况具体分析。但一般来说还是有迹可循的,假设你要处理的数据存在你代码逻辑中没考虑到的情况,如上面案例中代码逻辑是处理整数的,结果接收的数据不是整数,此时就要做异常处理;又如上面案例中删除数据库的记录时就要考虑到存在记录已被删除的可能性,要对删除记录时记录不存在的情况做异常处理;再如编辑记录时要做数据库锁,就是其他用户在编辑时对该记录上锁,代码逻辑要判断是否有锁、记录是否已经被删除这些情况都要预判并做异常处理。
回答于 2019-09-11 08:43:50
什么语言都差不多,数字处理(如除零等)、边界异常、阻塞、事务等,没什么特别的
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |