2016-11-25 61 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