处理Python未捕获异常

本文转载自:技术小黑屋

和Java一样,python也提供了对于checked exception和unchecked exception. 对于checked exception,我们通常使用try except可以显示解决,对于unchecked 异常,其实也是提供回调或者是钩子来帮助我们处理的,我们可以在钩子里面记录崩溃栈追踪或者发送崩溃数据. 
下面代码可以实现python unchecked exception回调,并输出日志信息.

#!/usr/bin/env python
# coding=utf-8
import os, sys
import logging
logger = logging.getLogger(__name__)
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
def handle_exception(exc_type, exc_value, exc_traceback):
    if issubclass(exc_type, KeyboardInterrupt):
        sys.__excepthook__(exc_type, exc_value, exc_traceback)
        return
    logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))
sys.excepthook = handle_exception
if __name__ == "__main__":
    raise RuntimeError("Test unhandled Exception")

相关解释

  • 上述忽略处理终端下键盘按Ctrl + C 终止异常.
  • 上述使用python的日志管理模块输出格式化的异常信息.

参考文章

http://stackoverflow.com/questions/6234405/logging-uncaught-exceptions-in-python/16993115#16993115

处理Python未捕获异常

时间: 2024-10-13 23:58:14

处理Python未捕获异常的相关文章

未捕获异常,现实程序崩溃闪退

碰到程序崩溃时,闪退效果,不会提示"xxx程序异常,退出程序".这样的效果就要使用到未捕获异常来实现,这里记录了我的一个写法.其实原理很简单,设置程序的未捕获异常监听,实现监听的一个方法,在该方法中现实直接没有提示的退出程序. 捕获异常工具类 package com.tdh.http; import java.io.PrintWriter; import java.io.StringWriter; import java.lang.Thread.UncaughtExceptionHan

Android-小小设置永久解决程序因为未捕获异常而异常终止的问题

(一) 前言各位亲爱的午饭童鞋,是不是经常因为自己的程序中出现未层捕获的异常导致程序异常终止而痛苦不已?嗯,是的.. 但是,大家不要怕,今天给大家分享一个东东可以解决大家这种困扰,吼吼! (二) UncaughtExceptionHandler接口这个接口,顾名思义,就是处理程序中没有处理的异常,而且是在系统抛出异常导致程序异常终止之前哦!那么,在Android里面怎么使用呢? (三) 怎么使用UncaughtExceptionHandler1. 首先,咱们得创建一个UncaughtExcept

JAVA处理未捕获异常

线程执行完run方法即可正常退出,如果发生了没有捕获的异常则会异常退出.大多数情况下,由于异常导致的线程退出都不是我们想要的.所以在编写的代码的时候要尽可能的捕获处理可以处理的异常,但是也不能光简单的捕获异常然后什么也不做.下面介绍线程异常的处理办法.? ?JVM为我们提供了线程的未捕获异常处理机制,通过Thread的setUncaughtExceptionHandler方法:? ? ? ? ? ? ? ?public void setUncaughtExceptionHandler(Uncau

python动态捕获异常-乾颐堂

在讨论动态捕获异常时让我大吃一惊的是,可以让我找到隐藏的Bug和乐趣... 有问题的代码 下面的代码来自一个产品中看起来是好的抽象代码 - slightly(!) .这是调用一些统计数据的函数,然后进行处理 . 首先是用socket连接获取一个值,可能发生了socket错误.由于统计数据在系统中不是至关重要的,我们只是记一下日志错误并继续往下走. (请注意,这篇文章我使用doctest测试的 - 这代表代码可以运行!) >>> def get_stats(): ...     pass

WPF 程序 处理未捕获异常,和程序莫名终止说拜拜

http://www.cnblogs.com/liuyueyu/p/4476151.html 百密一疏的Bug很难避免,没有谁能保证,我的程序永远 0 BUG; 突然接手一个很庞大的项目,在项目运行期间会莫名异常结束,异常极难重现,还找不出BUG代码,代码太多了. 这个时候就需要把程序中发生的BUG记录下来,知道哪里BUG了,才好下次更新解决. 把所有代码全部加 try catch ?  那就怀孕了,真的搞大了. 未捕获的异常处理: 一:C# 在 Application 类中提供了 Dispat

python未完结

python [[email protected] ~]# python --version      查看python版本 Python 2.7.5 [[email protected] ~]# python Python 2.7.5 (default, Feb 11 2014, 07:46:25) [GCC 4.8.2 20140120 (Red Hat 4.8.2-13)] on linux2 Type "help", "copyright", "c

安装PIL库时提示python未注册错误(自定义python安装路径)

1 import sys 2 3 from _winreg import * 4 5 # tweak as necessary 6 version = sys.version[:3] 7 installpath = sys.prefix 8 regpath = "SOFTWARE\Python\Pythoncore\%s\\" % (version) 9 installkey = "InstallPath" 10 pythonkey = "PythonPa

Python 在 Windows 下安装第三方包,报 Python 未注册的问题解决

保存一些代码为 reg.py,运行之即可. #/usr/bin/env python # -*- coding: utf-8 -*- import sys from _winreg import * # tweak as necessary version = sys.version[:3] installpath = sys.prefix regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version) installkey = &

python异常捕获异常堆栈输出

学习了:https://blog.csdn.net/chris_grass/article/details/77927902 import traceback def fun(a,b): return a/b try: fun(1,0) except Exception as e: traceback.print_exc() 原文地址:https://www.cnblogs.com/stono/p/8975584.html