这个回溯搞乱了我所有的程序,我仍然无法修复它,我已经尝试了所有方法,但没有帮助!
问题是这样的:
ffi_prep_closure(): bad user_data (似乎运行时看到的 libffi 库的版本与编译时看到的 'ffi.h' 文件不同)
我已经看到了类似的问题,但没有一个真正解决了引用.如果我有这样的课程
class Stop_if_no_then():
def __init__(self, value one, operator, value_two, then, line_or_label, line_number):
self._firstvalue = value_one
self._secondvalue = value_two
self._operator = operator
self._gohere = line_or_label
self._then = then
self._line_number = line_number
def execute(self, OtherClass):
"code comparing the first two values and making changes etc"
Run Code Online (Sandbox Code Playgroud)
我希望我的执行方法能够做的是,如果self._then不等于字符串"THEN"(在allcaps中),那么我希望它引发自定义错误消息并终止整个程序,同时也不显示追溯.
如果遇到错误,唯一应该打印的东西看起来像(我使用3作为示例,格式化不是问题)这个.
`Syntax Error (Line 3): No -THEN- present in the statement.`
Run Code Online (Sandbox Code Playgroud)
我不是很挑剔它实际上是一个异常类对象,所以在这方面没有问题.因为我将在while循环中使用它,简单如果,elif只是一遍又一遍地重复该消息(因为显然我没有关闭循环).我见过sys.exit(),但是也打印出一个巨大的红色文本块,除非我没有正确使用它.我不想在循环中捕获异常,因为在同一个模块中还有其他类需要实现这样的东西.
类具有__exit__
允许实现上下文管理器的可定义函数。
它需要所需的参数:
def __exit__(self, exc_type, exc_val, exc_tb):
Run Code Online (Sandbox Code Playgroud)
但我找不到这些论点是什么及其类型的明确定义。
这是我对它们是什么以及为什么的最佳猜测,但我不完全确定:
def __exit__(self, exc_type: Exception, exc_val: TracebackException, exc_tb: TracebackType):
Run Code Online (Sandbox Code Playgroud)
蟒限定了TracebackException
一个接受一个类exc_type
,其中内容使用在构造参数issubclass
与SyntaxError
,这推断出exc_type
确实是某种Exception
,其SyntaxError
从继承。
此外,在TracebackException
类是exc_value
符合了我们的说法exc_val
似乎有不同的属性,如__cause__
,__context__
和那些在所有定义的其他属性TracebackType
本身。这让我觉得参数本身就是TracebackException
.
蟒限定walk_tb函数使用exc_tb
作为参数(手动地从跟踪docs.python.org),并且该对象似乎具有tb_frame
,tb_lineno
和tb_next
其可追溯到一个属性TracebackType
在类typeshed
库。
想法?
可能重复:
如何对Perl中的所有致命错误强制执行堆栈回溯?
我喜欢Python的一个方面是,当一个脚本因为错误而退出时,它会抛出一个回溯.我想知道是否还有Perl这样做呢?
使用:
traceback.print_stack()
Run Code Online (Sandbox Code Playgroud)
我可以得到:
File "x.py", line 20, in <module>
y(x)
File "x.py", line 11, in y
fun(x)
File "x.py", line 8, in fun
traceback.print_stack()
Run Code Online (Sandbox Code Playgroud)
我有办法得到这样的东西:
File "x.py", line 20, in <module>
y(x) WHERE x == 1
File "x.py", line 11, in y
fun(x) WHERE x == 'str'
File "x.py", line 8, in fun
traceback.print_stack()
Run Code Online (Sandbox Code Playgroud)
我只是想看看哪些参数传递给函数.
我正在用Selenium写一些测试.
当我运行我的selenium测试(LiveServerTestCase
类型)并且我的代码中有一些错误(不是在测试中,我的意思是在执行的代码中,就像我用selenium到达的主页视图)我得到500模板(通常我得到的时候)我有DEBUG = False)即使我有:
DEBUG = True
INTERNAL_IPS = ('127.0.0.1',)
Run Code Online (Sandbox Code Playgroud)
我坚持这一点,我不明白为什么我的测试失败(因为在公众500我没有显示例外).
为什么它表现得那样?我在哪里可以解决?
当我运行runserver时它完美运行(我得到回溯).
我有一个代码,在某些时候显示警告,我认为它有一个问题计算 mean()
我想知道是否有任何方法可以强制python告诉我在哪里,或哪行,或者除了这条消息以外的更多信息:
C:\Python27\lib\site-packages\numpy\core\_methods.py:55: RuntimeWarning: Mean of empty slice.
warnings.warn("Mean of empty slice.", RuntimeWarning)
C:\Python27\lib\site-packages\numpy\core\_methods.py:79: RuntimeWarning: Degrees of freedom <= 0 for slice
warnings.warn("Degrees of freedom <= 0 for slice", RuntimeWarning)
Run Code Online (Sandbox Code Playgroud)
我不知道是否有可能"抓住"警告.....如果我有任何错误,通常我使用的是追溯包:
import traceback
然后我通常做:
try:
#something
except:
print traceback.format_exc()
Run Code Online (Sandbox Code Playgroud) 请考虑以下代码和回溯:
>>> try:
... raise KeyboardInterrupt
... except KeyboardInterrupt:
... raise Exception
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
KeyboardInterrupt
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
Exception
>>>
Run Code Online (Sandbox Code Playgroud)
我想只打印最近的追溯(其中一个Exception
被提出).
怎么能实现这一目标?
从上面的例子中,我想打印以下内容,就像raise Exception
在except
子句之外调用一样.
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
Exception
Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中托管了IronPython,每当我捕获从脚本抛出的异常时,我就会得到像这样无益的乱码:
IronPython.NewTypes.System.Exception_1$1: Error occurred during conversion ---> Microsoft.Scripting.ArgumentTypeException: expected int, got DispMethod
at _stub_$245##245(Closure , CallSite , Object )
at Microsoft.Scripting.Actions.MatchCaller.Call1[T0,TRet](Func`3 target, CallSite site, Object[] args)
at Microsoft.Scripting.Actions.CallSite`1.UpdateAndExecute(Object[] args)
at Microsoft.Scripting.Actions.UpdateDelegates.Update1[T,T0,TRet](CallSite site, T0 arg0)
at _stub_$227##227(Closure , CallSite , Object )
at IronPython.Runtime.Converter.Convert(Object value, Type to)
at IronPython.Runtime.Operations.ArrayOps.SetItem(Array data, Int32 index, Object value)
at _stub_$244##244(Closure , CallSite , Object , Object , Object )
at Microsoft.Scripting.Actions.MatchCaller.Call3[T0,T1,T2,TRet](Func`5 target, CallSite site, Object[] args)
at Microsoft.Scripting.Actions.CallSite`1.UpdateAndExecute(Object[] args)
at Microsoft.Scripting.Actions.UpdateDelegates.Update3[T,T0,T1,T2,TRet](CallSite site, T0 arg0, T1 …
Run Code Online (Sandbox Code Playgroud) traceback ×10
python ×8
exception ×3
python-3.x ×2
debugging ×1
django ×1
exit ×1
ironpython ×1
perl ×1
pickle ×1
selenium ×1
stack-trace ×1
warnings ×1