I think the main issue is this: exception handling is already problematic with its nonlocal transfer of control. Making it bidirectional makes code even more difficult to understand. State will change "under your feet" without any syntactic clue.
In "The Design and Evolution of C++" Bjarne Stroustroup quotes an engineer working on a large system using such a feature extensively ; they ended up having to rewrite every single occurrence of it because it introduced a huge amounts of bugs. This is the reason C++ does not support resume semantics.
Newer languages go in the direction of avoiding exceptions altogether, not adding more intricate control flow directives. This proposal is basically about introducing goto to the language.
בתאריך יום ב׳, 7 בינו׳ 2019, 5:07, מאת Richard Damon < Richard@damon-family.org>:
On 1/6/19 9:54 PM, simon.bordeyne wrote:
I knew that you can just chain try/except blocks, and it's how I do it now, but the example I provided wasn't very realistic.
Take for example the initialization of a class from a config file, config file which may or may not have certain keys in it. With many keys, it is very inconvenient to chain try/except blocks to handle every possible case. Having the continue keyword would prove useful to put several error prone lines of code into a single try block, and have the execution continue as normal at tge statement after the statement errored out
For something like reading options from a config file, I would use a call that specifies the key and a value to use if the key isn't present, and inside that function I might use a try to handle any exception caused when processing the key, and it could return the default.
For your case, it is hard to imagine what you could put in the except block to handle the error, as you have no idea which key threw the error, so you have no idea which key needs to be fixed.
Also, what happens if the exception is thrown inside a function that is called, do you return to the next line of that function, or the next line after the function call?
What happens if the exception happens inside a loop (that is inside the try)? Do you just go to the next instruction in the loop and continue looping?
-- Richard Damon
Python-ideas mailing list Pythonemail@example.com https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/