相关疑难解决方法(0)

在Python中手动引发(抛出)异常

如何在Python中引发异常以便以后可以通过except块捕获?

python exception

2079
推荐指数
7
解决办法
161万
查看次数

python如何重新引发已经捕获的异常?

import sys
def worker(a):
    try:
        return 1 / a
    except ZeroDivisionError:
        return None


def master():
    res = worker(0)
    if not res:
        print(sys.exc_info())
        raise sys.exc_info()[0]
Run Code Online (Sandbox Code Playgroud)

作为上面的代码段,我有一堆函数,比如worker。他们已经有了自己的 try-except 块来处理异常。然后一个主函数将调用每个工人。现在,sys.exc_info() 将所有 None 返回到 3 个元素,如何在 master 函数中重新引发异常?我正在使用 Python 2.7

一个更新:我有 1000 多个工人,有些工人逻辑非常复杂,他们可能同时处理多种类型的异常。所以我的问题是我可以只从 master 提出这些例外而不是编辑作品吗?

python exception

5
推荐指数
2
解决办法
9628
查看次数

python函数末尾“ raise”或“ except”以外的“ raise”

这是什么raise做的,如果它不是内部tryexcept条款,而只是作为函数的最后一条语句?

def foo(self):
    try:
        # some code that raises an exception
    except Exception as e:
        pass

    # notice that the "raise" is outside
    raise
Run Code Online (Sandbox Code Playgroud)

此示例打印1,但不打印2,因此必须是last raise语句只是引发了最后抛出的异常。

def foo():
    try:
        raise Exception()
    except Exception as e:
        pass

    print 1
    raise
    print 2

if __name__ == '__main__':
    foo()
Run Code Online (Sandbox Code Playgroud)

有关这种使用方式的任何正式文档?

python python-2.7

4
推荐指数
2
解决办法
4078
查看次数

RESTful api 设计:通过嵌套函数处理异常(python、flask)

我想提高我的编码风格的一个更强大的把握tryexceptraise在设计API,以及更简洁的代码。

我有嵌套函数,当一个函数捕获到一个 execption 时,我将异常传递给另一个函数,依此类推。

但是像这样,我可以传播对同一错误的多次检查。我指的是:[在python中使用try vs if 来考虑尝试操作的成本。

您将如何在嵌套函数中仅处理一次错误?

例如

  • 我有一个功能f(key)对键进行一些操作;结果传递给其他函数g()h()
  • 如果结果符合预期的数据结构, g() .. h() 将操作并返回更新的结果
  • 装饰器将返回最终结果或返回遇到的 第一个错误,即指出它是在哪个方法中引发的(f(),g()h())。

我正在做这样的事情:

def f(key):
   try:
     #do something
     return {'data' : 'data_structure'}
   except:
     return {'error': 'there is an error'}

@application.route('/')
def api_f(key):
    data = f(k)
    try:
       # do something on data
       return jsonify(data)
    except:
       return jsonify({'error':'error in key'})
Run Code Online (Sandbox Code Playgroud)

python api try-catch restful-architecture

2
推荐指数
1
解决办法
9808
查看次数

程序员说“引发错误”是什么意思(例如,为什么要这样做)?

我正在学习 python 教程,然后来到了一个介绍错误的部分(熟悉错误,不要在出现问题时感到害怕等)。在深入研究了一些错误之后,我看到了“引发错误”和“引发异常”这两个词。

这是特定功能吗?如果是这样,“引发错误”有什么好处?在可视化这一点时,似乎执行代码时产生的错误在运行时被提升到其他代码之上......有人可以帮我把它拼凑起来吗?

提前致谢!

python error-handling

0
推荐指数
1
解决办法
949
查看次数