You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee='https://github.com/terryjreedy'closed_at=Nonecreated_at=<Date2012-07-10.02:27:04.265>labels= ['expert-IDLE', 'type-bug', '3.7']
title='IDLE - remove all bare excepts'updated_at=<Date2017-06-30.01:02:35.588>user='https://github.com/serwy'
And possibly change the except clause. The except clause at PyShell 1245 was 'pass', which masked the issue of bpo-13532 and was changed to 'raise' to effectively remove the try: except: to make the unknown problem more visible. It should perhaps be really removed if and when all calls to PyShell.write(s) are properly guarded to make sure 's' is writable.
Line 1245 is part of this code (in time, these line numbers will change.)
try:
self.text.mark_gravity("iomark", "right")
OutputWindow.write(self, s, tags, "iomark")
self.text.mark_gravity("iomark", "left")
except:
raise ###pass # ### 11Aug07 KBK if we are expecting exceptions
\# let's find out what they are and be specific.
The delegator chain that sits between OutputWindow.write and the Tkinter text.insert method can raise any error. (The ColorDelegator would raise a TypeError when "s" was not a string). I'd rather not replace this with "except Exception:" since the delegators should catch their own errors.
I suggest removing this try/catch block.
serwy commented on Jul 10, 2012
serwymannequin
MannequinAuthor
More actions
Also, bpo-13582 will become relevant on Windows since modifying the bare excepts may let uncaught exceptions be written to stderr, causing IDLE to crash.
I tried the command grep -n 'except:' *.py listed above.
I just noticed it probably should be grep -n 'except:' **/*.py above. Sorry for messing it up.
Activity
serwy commentedon Jul 10, 2012
There are a lot of bare exceptions in IDLE. Here's the output of "grep -n 'except:' *.py"
AutoComplete.py:184: except:
AutoComplete.py:209: except:
Debugger.py:172: except:
Debugger.py:344: except:
EditorWindow.py:999: except:
ObjectBrowser.py:38: except:
ObjectBrowser.py:100: except:
PyShell.py:133: except: # but debugger may not be active right now....
PyShell.py:154: except:
PyShell.py:161: except:
PyShell.py:176: except:
PyShell.py:433: except:
PyShell.py:742: except:
PyShell.py:869: except:
PyShell.py:1043: except:
PyShell.py:1096: except:
PyShell.py:1193: except:
PyShell.py:1214: except:
PyShell.py:1245: except:
rpc.py:106: except:
rpc.py:206: except:
run.py:88: except:
run.py:120: except:
run.py:125: except:
run.py:248: except:
run.py:332: except:
SearchEngine.py:72: except:
StackViewer.py:66: except:
WindowList.py:47: except:
Slowly, these exceptions should be refined to include the exact exception being caught.
terryjreedy commentedon Jul 10, 2012
And possibly change the except clause. The except clause at PyShell 1245 was 'pass', which masked the issue of bpo-13532 and was changed to 'raise' to effectively remove the try: except: to make the unknown problem more visible. It should perhaps be really removed if and when all calls to PyShell.write(s) are properly guarded to make sure 's' is writable.
serwy commentedon Jul 10, 2012
Line 1245 is part of this code (in time, these line numbers will change.)
The delegator chain that sits between OutputWindow.write and the Tkinter text.insert method can raise any error. (The ColorDelegator would raise a TypeError when "s" was not a string). I'd rather not replace this with "except Exception:" since the delegators should catch their own errors.
I suggest removing this try/catch block.
serwy commentedon Jul 10, 2012
Also, bpo-13582 will become relevant on Windows since modifying the bare excepts may let uncaught exceptions be written to stderr, causing IDLE to crash.
terryjreedy commentedon Nov 8, 2013
RA's patch for bpo-16261 suggests
Lee-W commentedon Sep 5, 2025
Hi, I just did
grep -n 'except:' *.pyon the latest main (f19f1d8), but did not find any bareexcepts.Would like to confirm whether we should close this one? Thanks!
corona10 commentedon Sep 5, 2025
We can close thanks for finding it!
@Lee-W
terryjreedy commentedon Sep 6, 2025
I don't know what @Lee-W actually did, but the instances listed above are nearly all still present. I rechecked pyshell.py and all 11 are still there.
Lee-W commentedon Sep 6, 2025
I tried the command
grep -n 'except:' *.pylisted above.I just noticed it probably should be
grep -n 'except:' **/*.pyabove. Sorry for messing it up.