Python异常处理(找出使用mongoengine从mongodb中读取记录时要捕获的异常类型)

问题描述 投票:0回答:1

我在mongoengine中使用python,在代码中有好几个地方,我从mongo db中读取数据并将数据保存在mongo db中。我看到python中有很多内置异常可以捕获,例如运行时,I / O异常等。

[我需要知道在python中从mongodb保存记录并在python中从mongodb中读取记录时捕获什么异常,或者我应该只使用Exception而不是捕获特定类型的异常。

try:
  db.collection({a=5}).save
except ?
    print()

try:
   db.collection.read()
except ?
      print()
python mongodb mongoengine
1个回答
0
投票

我可能对此有些怀疑,因为这并不是严格意义上的答案。这确实比回答更具指导性,但我认为这会有所帮助。许多没有异常编程经验的程序员起初都是做错事,他们试图在调用堆栈中捕获过多和过低的代码。

捕获异常而不是让其通过的目的是因为您可以做一些处理该异常的事情,并使程序以适当的方式继续运行。这意味着您只捕获想要的特定对象并且能够执行某些操作。有些很简单明了,有些可能是您的代码无法管理的,唯一要做的就是允许它退出。

Catching Exception,这意味着捕获所有异常,几乎总是错误的事情。通常,您应该尝试捕获属于您期望的异常范围内的异常或相当狭窄的一组异常,然后可以在代码中解决该异常。

[通常,在程序中可能会在发生异常的级别上处理某些异常,并且可能在调用堆栈中更适当地处理其他异常。这意味着您经常让一些异常在整个调用堆栈中冒泡,以使其在处理和继续执行的适当级别被捕获。

对于某些异常,您的程序可能无法正确处理它们,而正确的方法是让异常终止程序。

有时,即使您无法解决问题并继续进行,您可能也想捕获异常,以便可以清除某些状态,然后重新引发异常,以使更高级别的操作处理该异常的其他方面,或者它导致退出。有时,您可能只是捕获异常,以便记录有关异常的信息或为用户打印某种适当的消息,然后执行干净的退出操作。

重点是,我应该捕获哪些异常的问题的答案通常是非常不同的,取决于您可以处理或不能处理的内容,以及您可能希望如何向最终用户提出故障。

因此,在经过了较长的讨论后,我将转过来解决这个问题。如果捕获到异常,您的代码可以/将如何处理该异常?您能解决什么?

© www.soinside.com 2019 - 2024. All rights reserved.