您如何导致未捕获的异常通过logging
模块而不是通过模块输出stderr
?
我意识到最好的方法是:
try:
raise Exception, 'Throwing a boring exception'
except Exception, e:
logging.exception(e)
但是我的情况是,如果在没有捕获到异常的情况下自动调用它,那将 非常好logging.exception(...)
。
正如Ned所指出的,sys.excepthook
每次引发并捕获异常时都会调用它。实际的含义是,在您的代码中,您可以覆盖sys.excepthook
做任何您想做的事情(包括使用logging.exception
)的默认行为。
作为一个稻草人的例子:
>>> import sys
>>> def foo(exctype, value, tb):
... print 'My Error Information'
... print 'Type:', exctype
... print 'Value:', value
... print 'Traceback:', tb
...
覆写sys.excepthook
:
>>> sys.excepthook = foo
提交明显的语法错误(省略冒号)并获取自定义错误信息:
>>> def bar(a, b)
My Error Information
Type: <type 'exceptions.SyntaxError'>
Value: invalid syntax (<stdin>, line 1)
Traceback: None
有关更多信息sys.excepthook
,请阅读文档。
这个问题不是关于Rollbar tho:)
比这快吗?
我的用它的作用域启动coroutine 我的只处理一些逻辑,在本例中是某种验证器 然后我的只处理网络层/本地层 以下是我得到的错误日志: 错误直接指向显式的语句。
我有一个使用Jersey和Jackson在Glassfish 3.1.2下运行的RESTful web服务: 我现在想为这些意外的异常添加日志记录,但是尽管搜索,还是找不到我应该如何处理这个问题。 我尝试使用,并且可以确认它在方法主体中应用,但是它的方法从未被调用,因为在未捕获的异常到达我的处理程序之前,其他东西正在处理这些异常。 我看到一些人使用的另一个选项是,它捕获所有异常,然后筛选出WebA
问题内容: 为什么Java中的某些异常未被捕获?这是代码由于没有处理的异常而完全失败。(Java版本1.4)。 我得到一个 但这有效 我懂了 我以为捕获异常会捕获所有异常?如何捕获Java中的所有异常? 问题答案: 因为某些异常不是源自-例如和。 基本上,类型层次结构是: 只能抛出派生类,因此,如果您抓住,那实际上就可以抓住一切。 ,以及任何异常,从获得 其他 比那些源自数作为 检查的异常 -他们
我对Java线程、Runnable等相当陌生。因此,我想知道为什么下面的代码没有捕获异常? 阅读有没有一种方法可以使Runnable的run()引发异常,我收集到: "...如果您的run()方法确实是Thread的目标,则抛出异常是没有意义的,因为它是不可观察的;抛出异常与不抛出异常(无)具有相同的效果。"(@erickson) 我应该检查Runnable.run()方法中的异常。 为什么会这样
为什么Java中的一些异常不被捕获?这是完全失败的代码,有一个未处理的异常。(Java版本1.4)。 我在线程“main”java中得到了一个 但这行得通 我在java中没有发现任何方法错误。lang.NoSuchMethodError: 我以为捕获异常会捕获所有异常?如何捕获java中的所有异常?
我正在尝试创建一个过滤器来处理异常(请参见在JSF中处理未捕获的异常) 我在日志中看到错误: 我做错了什么?