管理python中的错误

管理python中的错误,python,exception,python-3.x,error-handling,Python,Exception,Python 3.x,Error Handling,我需要管理python错误。例如,当我键入: >>> 1/0 我回馈: Traceback (most recent call last): File "<pyshell#14>", line 1, in <module> 1/0 ZeroDivisionError: division by zero 并在输出中查看: division by zero 这对我来说还不够。我需要错误的行号,比如空闲(或其他IDE) (我使用python

我需要管理python错误。例如,当我键入:

>>> 1/0
我回馈:

Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    1/0
ZeroDivisionError: division by zero
并在输出中查看:

division by zero
这对我来说还不够。我需要错误的行号,比如空闲(或其他IDE) (我使用python 3.3,不能使用python 2.7)

使用提取特定信息,如行号:

>>> try:
...     f(0)
... except Exception as err:
...     import traceback
...     traceback.print_last()
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'float'
>>试试:
...     f(0)
... 除异常作为错误外:
...     导入回溯
...     traceback.print_last()
... 
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:无法将序列与“float”类型的非int相乘
使用提取特定信息,如行号:

>>> try:
...     f(0)
... except Exception as err:
...     import traceback
...     traceback.print_last()
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'float'
>>试试:
...     f(0)
... 除异常作为错误外:
...     导入回溯
...     traceback.print_last()
... 
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:无法将序列与“float”类型的非int相乘
使用提取特定信息,如行号:

>>> try:
...     f(0)
... except Exception as err:
...     import traceback
...     traceback.print_last()
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'float'
>>试试:
...     f(0)
... 除异常作为错误外:
...     导入回溯
...     traceback.print_last()
... 
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:无法将序列与“float”类型的非int相乘
使用提取特定信息,如行号:

>>> try:
...     f(0)
... except Exception as err:
...     import traceback
...     traceback.print_last()
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'float'
>>试试:
...     f(0)
... 除异常作为错误外:
...     导入回溯
...     traceback.print_last()
... 
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:无法将序列与“float”类型的非int相乘
您已将异常保存在变量
err
中。即使在
except
块之后,它仍然绑定到异常

(在异常情况下打印
这一事实并不表明这是一个单独的问题。)

但是,听起来您需要的是回溯对象,而不仅仅是异常对象。这不会为您自动绑定到变量,但您可以手动执行:

try:
    1/0
except Exception:
    exc_type, exc_value, exc_traceback = sys.exc_info()
有关更多信息,请参阅

但是一个
回溯
对象是一个相当沉重的东西,只要你存储它,它就会让所有其他沉重的东西保持活力。避免携带像回溯一样沉重且相互关联的对象的一种方法是从中提取您想要的信息。这就是本模块的目的:

try:
    1/0
except Exception:
    exc_type, exc_value, exc_traceback = sys.exc_info()
    exc_traceback = traceback.extract_tb(exc_traceback)
现在我们只携带字符串和数字的小元组列表,而不是回溯对象

或者,更简单地说,直接格式化它:

    exc_traceback = traceback.format_tb(exc_traceback)
您已将异常保存在变量
err
中。即使在
except
块之后,它仍然绑定到异常

(在异常情况下打印
这一事实并不表明这是一个单独的问题。)

但是,听起来您需要的是回溯对象,而不仅仅是异常对象。这不会为您自动绑定到变量,但您可以手动执行:

try:
    1/0
except Exception:
    exc_type, exc_value, exc_traceback = sys.exc_info()
有关更多信息,请参阅

但是一个
回溯
对象是一个相当沉重的东西,只要你存储它,它就会让所有其他沉重的东西保持活力。避免携带像回溯一样沉重且相互关联的对象的一种方法是从中提取您想要的信息。这就是本模块的目的:

try:
    1/0
except Exception:
    exc_type, exc_value, exc_traceback = sys.exc_info()
    exc_traceback = traceback.extract_tb(exc_traceback)
现在我们只携带字符串和数字的小元组列表,而不是回溯对象

或者,更简单地说,直接格式化它:

    exc_traceback = traceback.format_tb(exc_traceback)
您已将异常保存在变量
err
中。即使在
except
块之后,它仍然绑定到异常

(在异常情况下打印
这一事实并不表明这是一个单独的问题。)

但是,听起来您需要的是回溯对象,而不仅仅是异常对象。这不会为您自动绑定到变量,但您可以手动执行:

try:
    1/0
except Exception:
    exc_type, exc_value, exc_traceback = sys.exc_info()
有关更多信息,请参阅

但是一个
回溯
对象是一个相当沉重的东西,只要你存储它,它就会让所有其他沉重的东西保持活力。避免携带像回溯一样沉重且相互关联的对象的一种方法是从中提取您想要的信息。这就是本模块的目的:

try:
    1/0
except Exception:
    exc_type, exc_value, exc_traceback = sys.exc_info()
    exc_traceback = traceback.extract_tb(exc_traceback)
现在我们只携带字符串和数字的小元组列表,而不是回溯对象

或者,更简单地说,直接格式化它:

    exc_traceback = traceback.format_tb(exc_traceback)
您已将异常保存在变量
err
中。即使在
except
块之后,它仍然绑定到异常

(在异常情况下打印
这一事实并不表明这是一个单独的问题。)

但是,听起来您需要的是回溯对象,而不仅仅是异常对象。这不会为您自动绑定到变量,但您可以手动执行:

try:
    1/0
except Exception:
    exc_type, exc_value, exc_traceback = sys.exc_info()
有关更多信息,请参阅

但是一个
回溯
对象是一个相当沉重的东西,只要你存储它,它就会让所有其他沉重的东西保持活力。避免携带像回溯一样沉重且相互关联的对象的一种方法是从中提取您想要的信息。这就是本模块的目的:

try:
    1/0
except Exception:
    exc_type, exc_value, exc_traceback = sys.exc_info()
    exc_traceback = traceback.extract_tb(exc_traceback)
现在我们只携带字符串和数字的小元组列表,而不是回溯对象

或者,更简单地说,直接格式化它:

    exc_traceback = traceback.format_tb(exc_traceback)

可能的可能的可能的可能的可能的可能的。。。。你的答案就是我的目标……我给你20分;)。你。。。。你的答案就是我的目标……我给你20分;)。你。。。。你的答案就是我的目标……我给你20分;)。你。。。。你的答案就是我的目标……我给你20分;)。谢谢你,这对我很有用。这对我很有意思,下次我可以阻止一个错误!谢谢你,这对我很有用。这对我很有意思,下次我可以阻止一个错误!谢谢你,这对我很有用。这对我很有意思,下次我可以阻止一个错误!谢谢你,这对我很有用