如何更改异常位置?

问题描述

我想在我的代码中引发自定义异常,但显示了不必要的堆栈信息。

简单代码

import scipy as sp
p1=sp.special.expit(Phi@w)  

结果:

def func1(val):
    if isinstance(val,int) is True:
        print('value:',val)
    else:
        raise TypeError('must be integer')

def func2():
    func1(1)
    func1('1')

func2()

最后一个堆栈是 value: 1 Traceback (most recent call last): File "c:/Users/sss/etc/exceptionTest/exceptionTest.py",line 17,in <module> func2() File "c:/Users/sss/etc/exceptionTest/exceptionTest.py",line 14,in func2 func1('1') File "c:/Users/sss/etc/exceptionTest/exceptionTest.py",line 9,in func1 raise TypeError('must be integer') TypeError: must be integer 代码所在的位置,这不是必需的。我怎样才能删除它?

解决方法

您可以将 sys.tracebacklimit 设置为 Startup: lein update-in :dependencies conj \[acyclic/squiggly-clojure\ \"0.1.9-SNAPSHOT\"\] -- update-in :dependencies conj \[nrepl/nrepl\ \"0.8.3\"\] -- update-in :plugins conj \[refactor-nrepl\ \"2.5.0\"\] -- update-in :plugins conj \[cider/cider-nrepl\ \"0.25.8\"\] -- repl :headless :host localhost

-1

输出:

import sys
sys.tracebacklimit = -1

def func1(val):
    if isinstance(val,int):
        print('value:',val)
    else:
        raise TypeError('must be integer')

def func2():
    func1(1)
    func1('1')

func2()

或者如果您仍然希望能够看到错误的来源,请将 value: 1 Traceback (most recent call last): ** IDLE Internal Exception: TypeError: must be integer 设置为 sys.tracebacklimit

3

请注意,value: 1 Traceback (most recent call last): File "C:/Users/wil/Desktop/dsvcax.py",line 14,in <module> func2() File "C:/Users/wil/Desktop/dsvcax.py",line 12,in func2 func1('1') TypeError: must be integer 可以缩写为 if isinstance(val,int) is True:

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...