2016-11-25 29 views
0

我使用的是Windows 10,PyScripter 2.6,Python 3.4.4。Python(PyScripter)在运行有错误的程序时阻止“Not Responding”窗口

我是编程新手。我正在学习python并使用turtle模块创建程序。

乌龟模块创建一个窗口,让乌龟画出你告诉他们在窗口的画布上绘制的东西。

当我的乌龟程序出现错误时,乌龟窗口将进入“无响应”状态。它崩溃。我必须关闭它,将它发送到微软的错误报告,等等,等等

我的问题是,有一些代码或某种方式来防止“龟窗口”崩溃,并进入一个“没有回应”状态?

我试过调试和语法检查,但它们不能防止问题。

我的一部分告诉我,这只是它的方式。如果你编写错误的代码,你的程序会崩溃,但在开发环境中,似乎有一种方法可以“处理”这些事情。

感谢 添

代码和错误消息

CODE

def main(): 
    pass 

if __name__ == '__main__': 
    main() 

import turtle 

wn = turtle.Screen() 
wn.bgcolor("lightgreen") 
wn.title("Tess & Alex") 

tess = turtle.Turtle() 
tess.color("hotpink") 
tess.pensize(5) 

alex = turtle.Turtle 

tess.forward(80) 
tess.left(120) 
tess.forward(80) 
tess.left(120) 
tess.forward(80) 
tess.left(120) 

tess.right(180) 
tess.forward(80) 

for x in [0,1,2,3]: 
    alex.forward(50) 
    alex.left(90) 

wn.mainloop() 

错误

消息文件名线位置
茶ceback
C:\ PY \ 3 \ program1.py 41
类型错误:正向()缺少1个所需位置参数: '距离'

+0

请分享您的代码和错误消息, – Sachith

回答

0

在代码bug是这一行:

alex = turtle.Turtle 

应该是:

alex = turtle.Turtle() 

但让我们来解决您的大问题。我认为程序中的简单错误会导致长时间的崩溃,导致很难快速调试调试和测试周期。 (如果没有,只是与当前的观点一起生活)。尽管我无法在系统中重现行为,但我们可以尝试一些方法(仅针对开发,因为如果它仍然存在于完成的代码中,因为人们会皱眉,因为例外是太宽):

import sys 
from turtle import Turtle, Screen 

try: 
    screen = Screen() 
    screen.bgcolor("lightgreen") 
    screen.title("Tess & Alex") 

    tess = Turtle() 
    tess.color("hotpink") 
    tess.pensize(5) 

    for _ in range(3): 
     tess.forward(80) 
     tess.left(120) 

    tess.right(180) 
    tess.forward(80) 

    alex = Turtle 

    for _ in range(4): 
     alex.forward(50) 
     alex.left(90) 

except Exception as e: 
    exc_type, exc_obj, exc_tb = sys.exc_info() 
    print(exc_type, "Line:", exc_tb.tb_lineno, "\n", e) 
    exit() 

screen.mainloop() 

请注意,我故意保留你的missing()的错误。

<class 'TypeError'> Line: 23 
forward() missing 1 required positional argument: 'distance' 

而进入一个“没有响应”状态你:当它击中了错误这个时候,tryexcept内,它应该有希望立即返回。试一试,让我们知道它是否有帮助。

+0

谢谢。是啊。我发现在PyScripter中,如果窗口挂起,我可以调试和修复代码,然后在PyScripter中再次运行代码。 PyScripter将关闭无响应窗口并重新运行程序。如果我调试正确,它将会成功。做所有这些教程,我想我只是寻找一种方式来让程序在遇到错误时关闭,而不是进入没有响应的状态。 – user2851