# This keeps all separators in result
##########################################################################
import re
st="%%(c+dd+e+f-1523)%%7"
sh=re.compile('[\+\-//\*\<\>\%\(\)]')
def splitStringFull(sh, st):
ls=sh.split(st)
lo=[]
start=0
for l in ls:
if not l : continue
k=st.find(l)
llen=len(l)
if k> start:
tmp= st[start:k]
lo.append(tmp)
lo.append(l)
start = k + llen
else:
lo.append(l)
start =llen
return lo
#############################
li= splitStringFull(sh , st)
['%%(', 'c', '+', 'dd', '+', 'e', '+', 'f', '-', '1523', ')%%', '7']
*) Он, возможно, относился для начинания/спасания блоков, которые фиксируют любую ошибку, потому что вместо того, чтобы делать отладку легче, она делает его намного тяжелее, потому что Вы не знаете также, куда исключение прибывает из. не делайте этого, например:
def titanic
begin
#iceberg
puts "#{0 / 0} #{ 4 + :d} #{sfsf2h387gdxg}"
rescue Exception
#lifeboats with hoisted main sails in the rain
#avoid
puts "an error occurred"
end
end
*) может также случиться так, что, так как большая часть того, для чего используется рубин, не очень профессиональна, и начните/спасите/закончите, блок таким образом не так полезны, потому что нет большого количества точки броска пользовательских ошибок, когда высокая производительность является ненужной, и непользовательские ошибки не должны быть зафиксированы большую часть времени.
Я просто считал большое сообщение в блоге об этом в honeybadger.io:
, Почему Вы не должны спасать Исключение
, проблема со спасением Исключения состоит в том, что оно на самом деле спасает каждое исключение, которое наследовалось Исключению. Который является.... всеми ими!
Это - проблема, потому что существуют некоторые исключения, которые используются внутренне Ruby. Они не имеют никакого отношения к Вашему приложению, и глотание их вызовет плохие вещи произойти.
Вот несколько больших:
SignalException:: Прерывание - при спасении этого Вы не можете выйти из своего приложения путем удара управления-c.
ScriptError:: SyntaxError - Глотание синтаксических ошибок означает, что вещам нравится, помещает ("Забыл что-то), перестанет работать тихо.
NoMemoryError - Хотят знать то, что происходит, когда Ваша программа продолжает бегать за ним, израсходовал всю RAM? Я ни один.
begin do_something() rescue Exception => e # Don't do this. This will swallow every single exception. Nothing gets past it. end
я предполагаю, что Вы действительно не хотите глотать любое из этих исключений системного уровня. Вы только хотите зафиксировать все свои ошибки прикладного уровня. Исключения вызвали ВАШ код.
К счастью, существует простой способ к к этому.