如果在每个函数中,当某些条件不满足时我都会抛出异常,这是正常的吗?或者说根本不是那样做的?是否可以使用 try except 来控制应用程序的逻辑,如果可以,那么正确且最佳的方法是什么?
只是如果函数没有抛出异常,但某些事情没有按照我需要的方式进行。稍后如何捕捉。例如,我每次都需要检查这个函数返回什么,但这不太方便)
如果问题很愚蠢,我提前道歉,请不要投反对票)我真的无法理解。下面的代码就是例子。
# Обработка ошибок в логике
class CustomError(Exception):
def __init__(self, message):
super().__init__(message)
def __str__(self):
return f"{super().__str__()}"
# Любая функция
def get_yandex(self):
url = f"https://ya.ru"
response = requests.get(url)
if response.status_code == 200:
return response.json()
else:
raise CustomError(f"Ошибка при получении токена: {response.text}")
例外情况是一个持续争论的话题。如果它们能使你的程序更易读,那么你就可以使用它们。
例如,在 Python 中,内置异常
StopIteration用于控制迭代器的流程。那些。在 Python 中这被认为是正常的。要记住的事情:
异常可能会对性能产生负面影响。 (尤其是在 C++ 中)。
如果引发异常和捕获异常的位置之间的距离很大,则可能会出现意外情况,并会降低程序的可读性。
如果过于频繁地引发异常,则会使程序难以调试。
嗯,你看,如果你有,例如,这样的例子。您想要按顺序执行多个操作,并通过某种逻辑将它们统一起来。同时你也不想做任何不必要的事情。采用两种不同的方法会是什么样子。该代码非常有条件:
在我看来,使用异常可以避免不必要的检查。该函数无法正常执行 - 它引发了一个错误 - 这个错误被捕获到,以便您最方便地处理它。那些依赖于先前代码正确执行的代码块不会在没有额外检查的情况下自动执行。
根据我的主观经验,使用异常
Python可以改善代码的编写、可读性以及可能出现的情况的处理。尝试编写一个干净的程序,该程序将接收某些东西并给出某些东西,在最开始列出可能出现的异常,用可理解的语言描述它们的名称或添加注释。
通过阅读函数的源代码,您将立即知道它可能抛出什么异常,并且能够正确处理它们。
您还可以创建一个基类来从中继承异常并处理项目中调用函数的所有异常。
使用
try/except它контекст менеджер可以保证释放您可以在finally块中执行的资源(关闭连接、读取文件等)。不要害怕编写代码,最重要的是它对你和将来阅读它的人来说是可以理解的!
将大型程序分解为较小的部分,并使功能尽可能清晰(但不要太过狂热)。
如果发生的事情对于程序来说很正常,那么最好不要执行它,但如果它不正常,那么就执行它。