标签: traceback

从异常中获取回溯而不重新引发异常

我正在使用 Twister 构建服务器。我还维护服务器错误日志。问题是,如果我让异常在堆栈中一直运行,它会崩溃当前连接并断开用户连接,所以显然我附加了一个裸露的异常以获取其他所有内容。

一旦我捕获到某些内容,有没有办法将回溯作为字符串获取,以便我可以将其存储在某处/自己打印它,而无需引发它并让Python在程序崩溃时为我打印它?

python exception traceback

5
推荐指数
1
解决办法
3382
查看次数

python 回溯中的文件“<string>”

我正在将一个巨大的 py 模块重构为包 - 为了不破坏现有代码,我将其内容移动到package/__init__.py模块(将代码添加到 __init__.py)并继续从那里拆分它。我注意到在某个时刻,在我的回溯中我得到:

Traceback (most recent call last):
      File "<string>", line 656, in DoItemMenu
      File "bash\balt.py", line 2109, in PopupMenu
        link.AppendToMenu(menu,parent,*args)
      File "bash\balt.py", line 2225, in AppendToMenu
        for link in self.links: link.AppendToMenu(subMenu,window,data)
    ...
Run Code Online (Sandbox Code Playgroud)

其中的行File "<string>"对应于特定package/__init__.py模块。此外,PyCharm 的调试器显示“帧不可用”行,并且不会单步执行__init__.py. 为什么?与进口模式有关吗?

该代码由启动器类导入:

class UnicodeImporter(object):
    def find_module(self,fullname,path=None):
        if isinstance(fullname,unicode):
            fullname = fullname.replace(u'.',u'\\')
            exts = (u'.pyc',u'.pyo',u'.py')
        else:
            fullname = fullname.replace('.','\\')
            exts = ('.pyc','.pyo','.py')
        if os.path.exists(fullname) and os.path.isdir(fullname):
            return self
        for ext in …
Run Code Online (Sandbox Code Playgroud)

python python-import traceback python-2.7

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

R 在评估停止函数后禁用回溯

我正在使用一个函数进行错误处理,该函数在另一个函数中使用。这看起来像:

foo <- function() {
 fooo <- function () {
    stop('Hello World')
  }
  fooo()
}
Run Code Online (Sandbox Code Playgroud)

现在,在调用 时foo(),R 将提供回溯选项。但是,如果 onlyfooo()被调用(首先将其作为独立函数运行之后),该stop()函数将产生一条错误消息,而不会回溯。理想情况下,我会阻止 R 生成回溯选项并仅将错误消息打印到控制台。那么..我该怎么做呢?

error-handling r function traceback

5
推荐指数
0
解决办法
2933
查看次数

子进程子回溯

我想访问在子进程中运行的 python 程序的回溯。

文档说:

在新程序开始执行之前,子进程中引发的异常将在父进程中重新引发。此外,异常对象将有一个名为 child_traceback 的额外属性,它是一个字符串,包含从孩子的角度来看的回溯信息。

内容my_sub_program.py

raise Exception("I am raised!")
Run Code Online (Sandbox Code Playgroud)

内容my_main_program.py

import sys
import subprocess
try:
    subprocess.check_output([sys.executable, "my_sub_program.py"])
except Exception as e:
    print e.child_traceback
Run Code Online (Sandbox Code Playgroud)

如果我运行my_main_program.py,我会收到以下错误:

Traceback (most recent call last):
  File "my_main_program.py", line 6, in <module>
    print e.child_traceback
AttributeError: 'CalledProcessError' object has no attribute 'child_traceback'
Run Code Online (Sandbox Code Playgroud)

如何在不修改子流程程序代码的情况下访问子流程的回溯?这意味着,我想避免try/except在我的整个子程序代码周围添加一个大子句,而是从我的主程序中处理错误日志。

编辑: sys.executable应该可以用不同于运行主程序的解释器替换。

python subprocess traceback

5
推荐指数
1
解决办法
1951
查看次数

在本地环境中调用 getResolvedOptions() 会生成 KeyError

我有一个本地 AWS Glue 环境,其中包含 AWS Glue 库、Spark、PySpark 以及安装的所有内容。

我正在运行以下代码(实际上是在 REPL 中复制粘贴):

from awsglue.utils import getResolvedOptions

args = []
args.insert(-1, {"--JOB_NAME": "JOB_NAME"})
args.insert(-1, {"--input_file_path": "s3://things/that.csv"})
args.insert(-1, {"--output_bucket": "s3://things"})

getResolvedOptions(args, [
    '--JOB_NAME',
    '--input_file_path',
    '--output_bucket']
)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
  File "C:\Users\UBI9\bin\aws-glue-libs\PyGlue.zip\awsglue\utils.py", line 115, in getResolvedOptions
  File "C:\Progra~1\Python37\lib\argparse.py", line 1781, in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
  File "C:\Progra~1\Python37\lib\argparse.py", line 1822, in _parse_known_args
    option_tuple = self._parse_optional(arg_string)
  File "C:\Progra~1\Python37\lib\argparse.py", line 2108, in _parse_optional
    if not arg_string[0] …
Run Code Online (Sandbox Code Playgroud)

python traceback aws-glue

5
推荐指数
1
解决办法
1万
查看次数

如何在 JavaScript 中记录没有堆栈跟踪的错误消息?

我想在不退出程序的情况下记录发生的错误,因此我将可能会引发错误的代码包含在try-catch这样的块中

try
{
    let query = parseStatement(input); // might throw an error
    console.log(query);
}
catch (err)
{
    console.error(err); // logs the entire error with stack trace
}
finally
{
    this.prompt();
}
Run Code Online (Sandbox Code Playgroud)

我想获得的输出是没有整个堆栈跟踪的错误消息。大致如下:

Error: Missing semicolon at the end of statement: <statement>

并不是

Error: Missing semicolon at the end of statement: <statement>
    at error (/home/nic/dev/nodedb/src/errors.js:5:11)
    at Function.tokenize (/home/nic/dev/nodedb/src/tokens.js:53:13)
    at parseStatement (/home/nic/dev/nodedb/src/sql.js:35:24)
    at Shell.onData (/home/nic/dev/nodedb/src/shell.js:49:25)
    at ReadStream.emit (node:events:394:28)
    at addChunk (node:internal/streams/readable:312:12)
    at readableAddChunk (node:internal/streams/readable:287:9)
    at ReadStream.Readable.push (node:internal/streams/readable:226:10)
    at TTY.onStreamRead (node:internal/stream_base_commons:190:23)
Run Code Online (Sandbox Code Playgroud)

javascript error-handling stack-trace node.js traceback

5
推荐指数
1
解决办法
7064
查看次数

如何使打字机回溯看起来正常

当使用typer解析 CLI 参数时,我收到非常详细且丰富多彩的错误消息。如何获得正常的 Python 回溯?

\n

请参阅示例回溯的屏幕截图(仅前几行)以了解详细样式的说明:

\n
\xe2\x9d\xaf python scripts/add_priors.py             \n\xe2\x95\xad\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80 Traceback (most recent call last) \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x95\xae\n\xe2\x94\x82 /Users/corneliusromer/code/nextclade_data_workflows/sars-cov-2/scripts/add_priors.py:26 in main  \xe2\x94\x82\n\xe2\x94\x82                                                                                                  \xe2\x94\x82\n\xe2\x94\x82   23 \xe2\x94\x82   import polars as pl                                                                     \xe2\x94\x82\n\xe2\x94\x82   24 \xe2\x94\x82                                                                                           \xe2\x94\x82\n\xe2\x94\x82   25 \xe2\x94\x82   priors = (                                                                              \xe2\x94\x82\n\xe2\x94\x82 \xe2\x9d\xb1 26 \xe2\x94\x82   \xe2\x94\x82   pl.scan_ndjson(ndjson, infer_schema_length=10000)                                   \xe2\x94\x82\n\xe2\x94\x82   27 \xe2\x94\x82   \xe2\x94\x82   .select(                                                                            \xe2\x94\x82\n\xe2\x94\x82   28 \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   [                                                                               \xe2\x94\x82\n\xe2\x94\x82   29 \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   pl.col("nearestNodes"),                                                     \xe2\x94\x82\n\xe2\x94\x82                                                                                                  \xe2\x94\x82\n\xe2\x94\x82 \xe2\x95\xad\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80 locals \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x95\xae \xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82   json = <module \'json\' from                                                                 \xe2\x94\x82 \xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82 …
Run Code Online (Sandbox Code Playgroud)

python command-line-interface traceback typer

5
推荐指数
1
解决办法
745
查看次数

R语言:如何在Rstudio/console中清除帧/堆栈

通过堆栈,我在错误条件下引用traceback()的输出.如何"清除堆栈"以便从traceback()获得"无可用回溯"?谢谢

r traceback

4
推荐指数
1
解决办法
424
查看次数

Pygame AttributeError:'module'对象没有属性'copy'

我有一个问题 - 当我运行我的pygame程序时,它有一个我在代码中找不到的错误.Error: 'module' object has no attribute 'copy'.我发现代码没有任何问题.有人可以帮我修复错误/错误吗?

pygame module python-2.5 attributeerror traceback

4
推荐指数
1
解决办法
5139
查看次数

Python traceback.print_exc()返回'None'

该函数应该捕获主执行中的异常.如果有异常,则应打印出错误log.error(traceback.print_exc())并清除exit_main().

def main():
    try:
        exec_app()
    except KeyboardInterrupt:
        log.error('Error: Backup aborted by user.')
        exit_main()
    except Exception:
        log.error('Error: An Exception was thrown.')
        log.error("-" * 60)
        log.error(traceback.print_exc())
        log.error("-" * 60)
        exit_main()
Run Code Online (Sandbox Code Playgroud)

不幸的是log.error(traceback.print_exc()),只有None在有异常时才返回.在这种情况下,如何使回溯打印完整的错误报告?

PS:我使用python 3.4.

python exception-handling traceback

4
推荐指数
1
解决办法
2113
查看次数