def resume_example(x)
print x
x += 4
begin
raise if x < 10
print x
rescue
x = 10
retry
end
puts
end
you have refactored my code to achieve the result. is all code so easily refactored?
def i_am_libaray_code
# this is a library call
# to be used in many differnt apps
# do not add user interface code!
raise SpecialWaring, "Warning, incoming!"
...
end
def resume_example(x)
begin
i_am_library_code
rescue SpecialWaring => e
puts e
resume
end
end
i can not refactor the lib call to conatin stdout, and i need a message from it about its status. perhaps there is another way to do this. if you know please tell!
i can not refactor the lib call to conatin stdout, and i need a message
from it about its status. perhaps there is another way to do this. if
you know please tell!
Becuase you can't refactor the library, you *can't* use resume like you
want use it because you know nothing about the internal of this library
In message “Re: retry does not work” on 03/11/20, “T. Onoma” transami@runbox.com writes:
you have refactored my code to achieve the result. is all code so easily refactored?
Not all, but most.
Your “resume” makes exception handling much harder. With “resume”,
every raise can be re-entered, that means programmers need to care
about re-entrance always.
def resume_example(x)
print x
x += 4
begin
raise if x < 10
print x
rescue
x = 10
retry
end
puts
end
you have refactored my code to achieve the result. is all code so easily
refactored?
def i_am_libaray_code
# this is a library call
# to be used in many differnt apps
# do not add user interface code!
raise SpecialWaring, "Warning, incoming!"
...
end
def resume_example(x)
begin
i_am_library_code
rescue SpecialWaring => e
puts e
resume
end
end
i can not refactor the lib call to conatin stdout, and i need a message
from it about its status. perhaps there is another way to do this. if you
know please tell!
What strikes me is that you use “resume” in the rescue clause instead of
“retry”. Is that on purpose or is maybe a simple misspelling the reason
for your frustration.