python - PHP 的 error_get_last() 函数的 Python 替代品是什么?

标签 python php exception porting

我需要实现一个 atexit Python 函数来获取最后一个错误对象并检查它的类型。如果 python 错误的类型对应于 PHP 的 E_ERROR,我应该将错误的输出保存到一个文件中。

我正在移植的 PHP 代码如下所示:

register_shutdown_function( "fatal_handler" );
function fatal_handler() {
  $error = error_get_last();
    if ($error != null && $error['type'] === E_ERROR)
        echo  "recordFatalError: {$error['message']}\n";
}

我的代码截图如下:

def fatal_handler():
   # How to get last error object?

atexit.register(fatal_handler)

如果有人向我解释如何使用 python 获得必要的功能,我会很高兴。

最佳答案

我会使用 sys.last_value为此:

import atexit
import sys

def fatal_handler():
    try:
        e = sys.last_value
    except AttributeError: # no exception prior to execution of fatal_handler
        return

atexit.register(fatal_handler)

您可以选择使用 getattr(sys, 'last_value', None) 代替 EAFP approach多于。如果 sys.last_value 不可用,它返回 None

或者,如果您只想在异常导致解释器关闭时运行一个函数,您可以使用 sys.excepthook :

import sys

def fatal_handler(type, value, traceback):
   e = value

sys.excepthook = fatal_handler

关于python - PHP 的 error_get_last() 函数的 Python 替代品是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38684921/

相关文章:

oracle - PL/SQL : catching numbered exception?

启动 Eclipse 时出现 java.lang.ClassNotFoundException

python - Vim:如何安装 UltiSnips 插件?

python - 不获取所有值,而是使用一对一字段获取另一个模型中字段的特定值

javascript - 如何从js发送参数到php codeigniter

java - Spring MongoDb ContextLoaderListener

python - 如何使用 flask_oauthlib 交换访问 token 的一次性授权码?

python - 输出音频文件创建不正确,或持续时间未知

php - 有谁知道一个好的框架或应用程序可以快速构建基于 MySQL 和 PHP 的 Web 应用程序的前端?

php - 在javascript中访问PHP变量