Tor*_*rek 17
您可以注册一个顶级异常处理程序,以便在发生未处理的异常时使应用程序保持活动状态:
def show_exception_and_exit(exc_type, exc_value, tb):
import traceback
traceback.print_exception(exc_type, exc_value, tb)
raw_input("Press key to exit.")
sys.exit(-1)
import sys
sys.excepthook = show_exception_and_exit
Run Code Online (Sandbox Code Playgroud)
如果在C代码中调用的事件处理程序中发生异常,这通常不会传播错误,这一点尤其有用.
Chr*_*ill 16
如果您在Windows操作系统上执行此操作,则可以为快捷方式的目标添加前缀:
C:\WINDOWS\system32\cmd.exe /K <command>
Run Code Online (Sandbox Code Playgroud)
这将阻止窗口在命令退出时关闭.
Mar*_*tin 15
try:
#do some stuff
1/0 #stuff that generated the exception
except Exception as ex:
print ex
raw_input()
Run Code Online (Sandbox Code Playgroud)
你可以有第二个脚本,它导入/运行你的主代码.此脚本将捕获所有异常,并打印回溯(然后在结束前等待用户输入)
假设您的代码是使用if __name__ == "__main__": main()成语构建的..
def myfunction():
pass
class Myclass():
pass
def main():
c = Myclass()
myfunction(c)
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
..并且该文件名为"myscriptname.py"(显然可以更改),以下内容将起作用
from myscriptname import main as myscript_main
try:
myscript_main()
except Exception, errormsg:
print "Script errored!"
print "Error message: %s" % errormsg
print "Traceback:"
import traceback
traceback.print_exc()
print "Press return to exit.."
raw_input()
Run Code Online (Sandbox Code Playgroud)
(注意raw_input()已input()在Python 3中替换)
如果您没有main()函数,则可以在try:块中使用import语句:
try:
import myscriptname
except [...]
Run Code Online (Sandbox Code Playgroud)
一个更好的解决方案,一个不需要额外的包装器脚本,是从IDLE或命令行运行脚本.
在Windows上,转到"开始">"运行",然后输入cmd并输入.然后输入类似的东西..
cd "\Path\To Your\ Script\"
\Python\bin\python.exe myscriptname.py
Run Code Online (Sandbox Code Playgroud)
(如果你安装了Python C:\Python\)
在Linux/Mac OS X上它是一个更容易一点,你只要运行cd /home/your/script/则python myscriptname.py
最简单的方法是使用IDLE,启动IDLE,打开脚本并单击运行按钮(F5或者Ctrl+F5我认为).当脚本退出时,窗口不会自动关闭,因此您可以看到任何错误
此外,正如Chris Thornhill所建议的那样,在Windows上,您可以创建脚本的快捷方式,并在其中使用属性为目标前缀...
C:\WINDOWS\system32\cmd.exe /K [existing command]
Run Code Online (Sandbox Code Playgroud)
来自http://www.computerhope.com/cmd.htm:
Run Code Online (Sandbox Code Playgroud)/K command - Executes the specified command and continues running.
小智 6
在UNIX系统上(上面已经介绍了Windows ...),您可以更改解释器参数以包含-i标志:
#!/ usr / bin / python -i
从手册页:
-一世
当将脚本作为第一个参数传递或使用-c选项时,请在执行脚本或命令后进入交互模式。它不会读取$ PYTHONSTARTUP文件。当脚本引发异常时,这对于检查全局变量或堆栈跟踪很有用。
| 归档时间: |
|
| 查看次数: |
30546 次 |
| 最近记录: |