Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python程序中引发手动异常是否会终止它?_Python_Exception - Fatal编程技术网

在python程序中引发手动异常是否会终止它?

在python程序中引发手动异常是否会终止它?,python,exception,Python,Exception,在python中调用raise语句是否会导致程序通过回溯退出,还是从下一个语句继续程序?我想引发一个异常,但继续余数程序。 我需要这个,因为我在第三方系统中运行程序,我希望抛出异常,然后继续程序。相关代码是一个必须返回的线程函数。 我不能生成一个新线程来抛出异常并让程序继续吗 我想引发一个异常,但继续余数程序 这没有多大意义:程序控件要么继续执行代码,要么沿着调用堆栈向上移动到最近的try块 相反,您可以尝试以下方法: traceback模块(用于读取或检查您看到的带有异常的回溯信息;您可以轻

在python中调用raise语句是否会导致程序通过回溯退出,还是从下一个语句继续程序?我想引发一个异常,但继续余数程序。 我需要这个,因为我在第三方系统中运行程序,我希望抛出异常,然后继续程序。相关代码是一个必须返回的线程函数。 我不能生成一个新线程来抛出异常并让程序继续吗

我想引发一个异常,但继续余数程序

这没有多大意义:程序控件要么继续执行代码,要么沿着调用堆栈向上移动到最近的
try

相反,您可以尝试以下方法:

  • traceback
    模块(用于读取或检查您看到的带有异常的回溯信息;您可以轻松地将其作为文本获取)
  • 日志记录
    模块(用于在程序运行时保存诊断)
例如:

def somewhere():
    print 'Oh no! Where am I?'
    import traceback
    print ''.join(traceback.format_stack())  # or traceback.print_stack(sys.stdout)
    print 'Oh, here I am.'

def someplace():
    somewhere()

someplace()
输出:

Oh no! Where am I?
  File "/home/kos/exc.py", line 10, in <module>
    someplace()
  File "/home/kos/exc.py", line 8, in someplace
    somewhere()
  File "/home/kos/exc.py", line 4, in somewhere
    print ''.join(traceback.format_stack())

Oh, here I am.
哦,不!我在哪里?
文件“/home/kos/exc.py”,第10行,在
某地
文件“/home/kos/exc.py”,第8行,在某处
某处
文件“/home/kos/exc.py”,第4行,在某处
打印“”。加入(回溯。格式\u堆栈())
哦,我来了。
只有未捕获的异常才会终止程序。如果您提出第三方软件不准备捕获和处理的异常,程序将终止。引发异常类似于软中止:您不知道如何处理错误,但您为使用代码的任何人提供了这样做的机会,而不仅仅是调用
sys.exit()


如果您没有准备好退出程序,请不要引发异常。只需记录错误即可。

为什么不先试试看呢?:)