1. Python / Говнокод #25805

    −2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    connect_attempt = 0
    		while True:
    			try:
    				r = requests_method(**kwargs)
    			except Exception as e:
    				if connect_attempt < cls.CONNECT_ATTEMPT_MAX:
    					connect_attempt += 1
    				else:
    					connect_attempt = 0
    					switchNext('Bad proxy')
    				
    				continue
    			
    			connect_attempt = 0
    			if cls.re_captcha.search(r.text):
    				switchNext('Capthca')
    				continue
    			return r

    Отрывок из прокси свитчера для моего парсера.
    try except в цикле - это плохо?

    Запостил: OlegUP, 04 Сентября 2019

    Комментарии (138) RSS

    • Не знаю.

      Можно просто
      except:

      Но по-моему плохо ловить все подряд исключения без разбора.

      Еще, что такое "Каптхка"?
      Ответить
      • Просто except Будет ловить keyboardinterrupt, например.

        >switchNext
        В питоне используется сишный_стиль, в одной проге использовать несколько плохо смотрится.
        Ответить
        • "Сишного" стиля не существует, это называется "snake_case". Кстати, пройдись по именам стандартной библиотеки питона, нет там никакого стиля.
          Ответить
          • Читни пепца,
            https://www.python.org/dev/peps/pep-0008/

            Function names should be lowercase, with words separated by underscores as necessary to improve readability.



            А про сишный стиль согласен
            В Win32API есть си, а стиля такова нет
            Ответить
            • http://ideone.com/fd2RuH
              Ответить
              • Ну и что? Пиздон сам свою же коньституцию не соблдает
                Даже в твоем выводе я насчитал два разных кодстайла
                Ответить
                • Ну я это, собственно, и показываю.
                  Ответить
                  • нувообще говоря по свинке пепе должно быть так:
                    pituh_protknooty.py:
                    
                    def petuh_koko(): pass
                      
                    class PetuhKookarekuu:
                           def petuh_pepe():pass


                    но есть нюанс
                    Ответить
                    • https://images-ext-1.discordapp.net/external/DD0ervS3pdWu046sl3bn0hPIX8NbuQXyyRYVtuqx 5vs/https/pbs.twimg.com/media/D9qtG7FWsAEa4CI.png?width=613&height=753
                      Ответить
                • Искать неконсистентности в язычке, который даже структурируется пробелами это всё равно, что бить млоденцов.
                  Ответить
                  • Ну вот например в Java, Kotlin, Swift, даже частично в ObC и уж конечно в C# анально-ректально насильно ввели кодстайл, и все его соблюдают, как миленькие
                    Ответить
                    • Куда что ввели?

                      Единственный язык, куда что-то ввели, это go, потому что там дедушка лучше знает, когда тебе писать
                      Ответить
                      • Ввели тебе за щеку же

                        В ObjC у тебя класс NSPetuh. Не nsPetuh не ns_petiih, а NSPetuh, например.
                        Ответить
                  • Школоуебан, ты отступы не осилил? Они есть в любом хуё-моё профессиональном коде.
                    Ответить
                  • Какой анскилл)))
                    Ответить
            • pep8 для python и google code style для C++ - говно.
              Мне нужно быстро отличать функции от полей.
              И кстати я не пользуюсь IDE (Спасибо 2ГБ на моем старом ноуте)

              Сначала в C++ я применял google code style.
              Но все таки то, что вроде как называется "Венгерская нотация" будет получше.
              Ответить
              • Какой багор, когда питон не по pep8.
                Ответить
                • да похрен, когда пишешь прогу на раз, как парсер.
                  Ответить
                • И таки pep8 говно, как и правила именования для Linux Kernel.

                  потому что переменные, поля и функции именуются одинаково snake case'ом.
                  А в Linux до кучи еще и струтуры так же.
                  Ответить
                  • >pep8 говно
                    во-первых нет

                    во-вторых лучше куржопеньский стандарт, чем никакого
                    Ответить
                  • Потому что функции — это тоже поля. Если ты не можешь по названию отличить callable поле, то значит твоё именование переменных — говно, RTFM.
                    Ответить
                    • А как ты прикажешь быть с пропертей?

                      class GostPetuh:
                        @property
                        def is_bukva(): #...
                      Ответить
                      • Проперти симулируют поведение обычных полей, что с ними может быть не так?
                        Ответить
                        • Как они должны называться, чувак?
                          Как проперти?
                          Ответить
                          • Очевидно: так, чтобы точно отображать смысл свойства. А неоднозначностей с «is_X» можно избежать, если писать конситентный код, в котором либо есть проперти (тогда — «guest8.is_petuh»), либо их нет («guest8.is_petuh()»).
                            Ответить
                            • Не понял про консистеный код

                              Где-то нужны проперти, где-то нет. Проперти обычно идемпотентны и шустры

                              Методы -- нет
                              Ответить
                              • Ещё раз: проперти созданы для того, чтобы абстрагироваться от богомерзких «геттеров» и «сеттеров». С точки зрения пользователя класса, проперти идентичны полям, и, не нарушая абстракцию, нельзя определить, является ли «petuh.dlina_grebeshka» простым полем или проперти. Поэтому проперти должны именоваться точно так же, как и обычные, non-callable, поля.

                                > Где-то нужны проперти, где-то нет. Проперти обычно идемпотентны и шустры
                                Ну да. Если получение длины гребешка — слишком тяжёлая операция для прозрачного заворачивания в проперти, можно явно объявить метод (который принято именовать в форме «сказуемое_подлежащее», или, в частности, «действие_ресурс»): «petuh.calculate_dlinu_grebeshka()».

                                Но вообще, статей по правильному™ именованию сущностей — вагон и маленькая тележка, выбирай любую и применяй с умом.
                                Ответить
                                • Хорошо, я тебя понял.

                                  В Java и методы и поля начинаются с маленькой буквы.
                                  В C# -- с большой (и проперти тоже).

                                  Верно-ли я понимаю, что и C# и Java кодстайлы тоже говно?
                                  Ответить
                                  • Про кодстайлы я ничего и не говорил, я говорил про именование сущностей. От кодстайла, по большому счёту, требуется только консистентность, а сам он может быть любым в рамках разумного (например, в «Python» для пельменных/полей у меня используется пеповский snake_case, в «C», «C++» и прочем — camelCase; имена типов — везде UpperCase).

                                    А вот «C#», кстати, я не одобряю: код, в котором с больших букв начинаются только названия типов, визуально выглядит легче, чем решёточный подход. Но это уже вкусовщина, конечно.
                                    Ответить
                                    • А какой стиль именования использован в моем нике?
                                      Ответить
                                      • Стиль? «Mixed_Case_With_Underscores». Такой используется в языке «Ада», именно поэтому я за «Ад» у него такое длинное название.
                                        Ответить
                                    • ничего не понял

                                      чем кодстайл отличается от наименований?

                                      что именно не нравится тебе в пеп 8?
                                      чем это отличается от сишарпа и джавы?
                                      Ответить
                                      • > чем кодстайл отличается от наименований?
                                        Кодстайл — это правила, по которым код оформляется: отступы, новые строки, разделение слов в многословных идентификаторах (snake_case, camelCase, MACRO_CASE, etc), пробелы вокруг выражений и так далее.

                                        Правила именования — это то, как именно программист называет переменные, функции, классы, методы и прочие сущности. Одно из таковых я уже приводил: функции/методы принято называть в виде «сказуемое_подлежащее»: «get_user_info», «create_words», «delete_instance» — нутыпонел. Заметь, что примеры я привёл в snake_case, но в контексте правил именования конкретный кодстайл совершенно неважен.
                                        Вот небольшая статейка на тему: https://hackernoon.com/the-art-of-naming-variables-52f44de00aad.

                                        > что именно не нравится тебе в пеп 8?
                                        Он мне нравится. Я за «PEP8».

                                        > чем это отличается от сишарпа и джавы?
                                        В них мне тоже всё нравится, кроме того, что в шарпеях методы принято писать с большой буквы. По моему субъективному мнению, это немного ухудшает читабельность кода.

                                        UPD: хотя я несколько неточен. Зачастую, в локальные кодстайлы (правила, подробно регаментирующие написание кода, которые действуют только в одной организации/команде) в том числе входят и правила именования, да.
                                        Ответить
                                        • Подлежащее сказуемое подлежит сказанию.

                                          Туфтологическая федорация.
                                          Ответить
                                          • В «PHP» нет никаких подлежащих и никаких сказуемых. Именно поэтому я за «PHP».
                                            Ответить
                                            • А а «S"Forth"» наверняка есть
                                              Ответить
                                              • В 'APL' и в 'J' точно есть. Хотя их принято называть не членами предложения, а частями речи: глаголом, существительным, наречием, союзом, знаками препинания.

                                                А в S" Forth" только операторы над содержимым стека и данные: слова, словари (списки), статьи.

                                                Поправьте меня, если я ошибаюсь.
                                                Ответить
                                        • >Если ты не можешь по названию отличить callable пол
                                          твои слова?

                                          Что такое

                                          petuh.predict или petuh.collapse: поле или метод?

                                          >https://hackernoon.com/the-art-of-naming-variables-52f44de00aad.

                                          От нашего слова -- вашему
                                          https://www.joelonsoftware.com/2005/05/11/making-wrong-code-look-wrong/
                                          Ответить
                                          • > твои слова?
                                            Мои слова заканчиваются так:
                                            >>> то значит твоё именование переменных — говно

                                            > petuh.predict или petuh.collapse: поле или метод?
                                            Сравни:
                                            «petuh.predict_answer или petuh.collapse_matrix»
                                            В такой форме это — однозначно методы. Именно это я и пытаюсь донести.

                                            > https://www.joelonsoftware.com/2005/05/11/making-wrong-code-look-wrong/
                                            Хорошая статья, полезная, ещё бы не экономить буквы и писать «unsafe_name» — было бы вообще заебись. Чай, не начало двухтысячных, и ширина экранов — не 80 символов.
                                            Только я не понимаю, как она противоречит идее о том, что называть сущности надо точно и однозначно.
                                            Ответить
                                            • >однозначно методы.
                                              class Petuh:
                                                def process():
                                                  if self.predict_answer:
                                                      self.do_predict_asnwer()
                                                  if self.pokovyratsa_v_zhope:
                                                      self.do_pokovyratsa_v_zhope()


                                              как видишь, не все так однозначно
                                              Ответить
                                              • Ну так правильно, если поля именуются как методы, то такое именование — говно.

                                                class Petuh:
                                                  def process():
                                                    if self.need_answer_prediction:
                                                        self.predict_asnwer()
                                                    if self.is_zhopa_cheshetsya:
                                                        self.pokovyratsa_v_zhope()

                                                Исправил. Теперь всё однозначно, проверь.
                                                Ответить
                                                • Ладно, я тебя понял, спсибо
                                                  Ответить
                                                  • Пожалуйста. Приятно подискутировать с умным человеком.
                                                    Ответить
                                                • Чем петух ковыряться то будет? Клювом?
                                                  Ответить
                                                  • VÄLKOMNA
                                                    http://goat.se/
                                                    Ответить
                                                  • А петух может переставлять джамперы?
                                                    Ответить
                                                    • Конечно, иначе как он выберет master, slave или cable select в своем 5400 hdd?
                                                      Ответить
                                                      • У них заводская конфигурация cable select поэтому работают искаропки
                                                        Ответить
                      • Проперти не нужны.
                        Ответить
                    • а? что? съел? съел про пертю? а? как тебе такое? а? прожуй-ка! а? что? съел? Чего молчишь? В Бобруйск ездил? А? Чего косишь? А? Заело, да? Ездил в Бобруйск? Ты, хуй? В Бобруйск ездил? Ездил, падло? Ездил, гад? Ездил, падло? Ездил, бля? Ездил, бля? Ездил, бля? Чего заныл? Ездил, сука? Ездил, бля? Ездил, бля? Ездил, бля? Чего ноешь? Чего сопишь, падло? Чего, а? Заныл? Заныл, падло? Чего сопишь? Так, бля? Так, бля? Так вот? Вот? Вот? Вот? Вот, бля? Вот так? Вот так? Вот так? Вот так, бля? На, бля? На, бля? На, бля? Вот? Вот? Вот? Вот? На, бля? На, сука? На, бля? На, сука? На, бля? На, сука? Заныл, бля? Заело, бля?
                      Ответить
                      • Ты дурак
                        Насрал в кулак
                        Держишь крепко
                        Думаешь конфетка
                        Ответить
                        • https://m.facebook.com/events/pattern-bar/fnkrbl-vulinej-asham-booratinho/445069969320558/
                          Ответить
                          • http://pageoverview.com/website-report/booratino.com.ua

                            Комсомольск оптом и в розницу.
                            Ответить
                          • лол!
                            https://i.postimg.cc/jq3r5VTB/lal.png
                            Ответить
                            • бурятинхо
                              Ответить
                              • https://www.youtube.com/watch?v=sIe9yUZn2-M
                                Вся ссуть русни.
                                Ответить
                                • Да, русня, в отличие от некоторых, имеет право на определение своей национальности. Разве это плохо?
                                  Ответить
                            • Странно. У меня говнокода даже на первой странице нету.
                              Ответить
                              • а что у тебя?
                                Ответить
                                • Вот это было. https://booratino.ru/

                                  Но уже не воспроизводится. Пробовал и "booratinho" и "booratihno".
                                  Ответить
                                  • А у меня вот
                                    https://www.kinopoisk.ru/film/469665/

                                    >режиссер Расмус Мериво

                                    ахахахахахахах
                                    Ответить
                                    • Персонализация.
                                      Именно поэтому я за "PHP".
                                      Ответить
                                      • PHP это рак
                                        Ответить
                                        • Именно поэтому я за «PHP».
                                          Ответить
                                        • И ещё Расмус не удаляет легаси-говно, так как слишком много людей за "PHP", и слишком много людей не смогут обновиться на "PHP7", иначе у них поломаются сайты. Хотя они и так каждый раз что-то депрекейтят или ломают, и вмешиваться "программисту" для правки кода всё равно приходится.
                                          Ответить
                                • а у меня томат
                                  Ответить
                    • А еще в «Python» никаких полей нет и называются они аттрибутами. Именно поэтому я за «Python».
                      Ответить
                      • В этом вашем «Python» хоть что-нибудь есть?
                        Ответить
                        • Да, есть GIL.
                          Ответить
                          • А в «PHP» никакого «GIL» нет. Именно поэтому я за «PHP».
                            Ответить
                            • В "РНР" и тредов нет, хули там лочить.
                              Ответить
                              • Именно поэтому я за "PHP".
                                Ответить
                              • А как же
                                https://www.php.net/manual/en/class.thread.php
                                ?

                                На пикабу статья даже есть...
                                Ответить
                                • Именно поэтому я за "пикабу".
                                  Ответить
                                • > PECL pthreads >= 2.0.0
                                  Сторонний костыль.
                                  Интересно, как с этим будут работать функции типа json_last_error(), если распарсить кривой джсон в джвух тредах.
                                  Ответить
                                  • А что не тсоронний?

                                    Вы пыхе вообще есть стандартная либлиотека?

                                    тут надо почитать
                                    https://pikabu.ru/tag/PHP
                                    Ответить
                                    • То, что Расмус заботливо положил в https://github.com/php/php-src
                                      Ответить
                                      • ахахаха

                                        /* dedicated implementation for increased performance:
                                        	 * - Make the content type lowercase
                                        	 * - Trim descriptive data, stay with the content-type only
                                        	 */
                                        	for (p=content_type; p<content_type+content_type_length; p++) {
                                        		switch (*p) {
                                        			case ';':
                                        			case ',':
                                        			case ' ':
                                        				content_type_length = p-content_type;
                                        				oldchar = *p;
                                        				*p = 0;
                                        				break;
                                        			default:
                                        				*p = tolower(*p);
                                        				break;
                                        		}
                                        	}
                                        Ответить
                          • GIL есть в "cPython" -- конкретной реалзиации пустона
                            В самом питоне нет
                            Ответить
                            • Ну строго говоря, да.
                              Ответить
                              • Воще я не очень уверен, что GIL это плохо.

                                Синхронизация тредов и борьба с гонками -- дело сложное, скриптомакаки не осиливают обычно.

                                Конечно, GIL портит настроение когда у тебя 56 ядер, но в эпоху микросервисов можно и 56 микросервисов запустить.
                                Ответить
                            • Does PyPy have a GIL? Why?

                              Yes, PyPy has a GIL. Removing the GIL is very hard. On top of CPython, you have two problems: (1) GC, in this case reference counting; (2) the whole Python language.

                              For PyPy, the hard issue is (2): by that I mean issues like what occurs if a mutable object is changed from one thread and read from another concurrently. This is a problem for any mutable type: it needs careful review and fixes (fine-grained locks, mostly) through the whole Python interpreter. It is a major effort, although not completely impossible, as Jython/IronPython showed. This includes subtle decisions about whether some effects are ok or not for the user (i.e. the Python programmer).

                              CPython has additionally the problem (1) of reference counting. With PyPy, this sub-problem is simpler: we need to make our GC multithread-aware. This is easier to do efficiently in PyPy than in CPython. It doesn’t solve the issue (2), though.

                              Note that since 2012 there is work going on on a still very experimental Software Transactional Memory (STM) version of PyPy. This should give an alternative PyPy which works without a GIL, while at the same time continuing to give the Python programmer the complete illusion of having one. This work is currently a bit stalled because of its own technical difficulties.

                              Отсюда: https://doc.pypy.org/en/latest/faq.html#does-pypy-have-a-gil-why

                              Так что и в «пи-пи» он тоже есть.

                              А вот в «Jython» и в «Iron Python» похоже, что нет.
                              Ответить
                          • IGIL
                            Ответить
                            • ISIS и OSPF
                              Ответить
                              • А я путаю GIL и PIL. Я вообще часто путаю трёхбуквенные сокращения.
                                Ответить
                                • А я путаю GIL и GO.
                                  И еще PIL и PowerShell
                                  Ответить
                                  • Я увидел под лобовым стеклом грузовика табличку: «ПУТАЮ ПЕДАЛИ». Чуть не пёрнул со страху.
                                    Ответить
                                  • Заметили, что у нас нет ни одного петуха, форсящего "Go"?
                                    Ответить
                                    • Это потому что "Go" - не скриптовый язык, а я за скриптовые языки.
                                      Ответить
                      • ебутами
                        Ответить
                      • Объясни, что ты спизднул.

                        A = в «Python» никаких полей нет
                        B = называются они аттрибутами
                        A и B => в «Python» никаких атрибутов нет.

                        ???
                        Ответить
                        • В «PHP» ничего этого нет. Именно поэтому я за «PHP».
                          Ответить
                          • Переведи на «PHP».
                            Поэтому я за «PHP».
                            Именно поэтому я за «PHP».
                            В «PHP» ничего этого нет. Именно поэтому я за «PHP».
                            Ответить
                            • есть что-то ещё?
                              Ответить
                              • >> Позволю себе напомнить, что на "PHP" работают такие мастодонты IT-индустрии, как "ВКонтакте" и "Facebook".

                                >> Для того, чтобы создавать проекты уровня "ВКонтакте" и "Facebook" на "PHP", вся эта хуйня не требуется.

                                >> Кому нужно "C++" когда есть "PHP" и прочее?

                                >> Советую процедурный "PHP" без фреймворков.

                                >> Позволю себе в очередной, блядь, раз напомнить, что на "PHP" работают такие гиганты IT-индустрии, как "ВКонтакте", "Facebook", "Yahoo" и "Wikipedia".

                                >> А ведь "C#" и подобные ему - полное говнище, не в пример "PHP".

                                >> Вы все заебали со своим кодом на "C++", "bach", "Python" и "VisualBasic". На этих блядущих языках уже давно адекватные программисты ничего не пишут - все перешли на "PHP".
                                Ответить
              • Венгерская нотация описывает только префиксы
                Ответить
          • Нету разве что в библиотеках, написаных в 90-х типа threading.
            Ответить
            • а так же в unitest, например
              Ответить
              • Обе - калька с жавы.
                Ответить
                • А у «PHP» свой, особенный путь. Именно поэтому я за «PHP».
                  Ответить
                  • у пыха тоже много калек с джавы
                    тупых и нелгичных, как и все в пыхе

                    пыхеры напоминают девочку девяти лет, которая накрасила маминой помадой пол лица и напялила мамины туфли на 4 размера больше
                    Ответить
    • вообще нормально

      ловля блох в питоне ничего не стоит
      это не жаба и не кресты
      Ответить
      • То есть в крестах, которые в разы быстрее питона исключения едят больше ресурсов? Что то не верится.
        Ответить
        • Подозреваю, что гость имел в виду другое: в «Питоне» и без того много лишней нагрузки, так что ловля исключений на общем фоне будет незаметна.
          Ответить
        • Язык не может быть быстрее или медленнее другого языка.

          Но исключения в оптимизированном нативном коде куда более заметны (Как минимум -- просёром префетча)
          Ответить
          • А как же холивары на тему того, какой язык быстрее? А как же фейсбуковский кокококомпилятор из «PHP» в сишку? А как же заявления компаний-гигантов о том, кокококой буст пирфоманса они получили в результате перехода с одного ЯП на другой?
            Ответить
    • Есть ли среди вас такие дауны, что пойдут на голосувание?
      Ответить
    • @@try except в цикле - это плохо?

      Попахивает гнилью.
      Любопытно, что в языках не поддерживающих обработку исключений, подобие конструкции try..except можно запилить... c помощью макроса с циклом внутри.
      Ответить
      • Примерчик макроса не покажете?
        Ответить
        • Вот, на сях, с юзаньем прыжков: https://habr.com/ru/post/280304/
          А вот на богомерзком purebasic, с юзаньем циклов. http://www.purebasic.info/phpBB3ex/viewtopic.php?p=87857
          Ответить
          • Где там циклы?
            Ответить
            • Циклы циклы мотоциклы
              Ответить
            • Сорян, не ту ссылочку запостил. Ну тогда вот код:

              ; http://www.purebasic-lounge.de
              ; Author: remi_meier
              ; Date: 09. December 2006
              ; OS: Windows
              ; Demo: Yes
              
              
              Global ___Exception.l
              Macro Throw(ex)
                ___Exception = ex
                ProcedureReturn
              EndMacro
              
              Macro Exception(ex = -1)
                CompilerIf ex = -1
                  If ___Exception : ProcedureReturn : EndIf
                CompilerElse
                  If ex = ___Exception : ProcedureReturn : EndIf
                CompilerEndIf
              EndMacro
              
              Macro CatchException(ex = -1)
                CompilerIf ex = -1
                  If ___Exception : Break : EndIf
                CompilerElse
                  If ex = ___Exception : Break : EndIf
                CompilerEndIf
              EndMacro
              
              Macro Try()
                Repeat ;<
              EndMacro
              
              Macro EndTry()
                Until #True ;>
              EndMacro
              
              Macro Catch(ex = -1)
                CompilerIf ex = -1
                  If ___Exception ;<
                CompilerElse
                  If ex = ___Exception ;<
                CompilerEndIf
              EndMacro
              
              Macro EndCatch()
                EndIf ;>
              EndMacro
              
              Macro ClearException()
                ___Exception = 0
              EndMacro
              
              
              
              ;- EXAMPLE
              
              Enumeration 1
                #ALLOCATION_FAILED
                #READFILE_FAILED
                #OPENWINDOW_FAILED
              EndEnumeration
              
              
              Procedure.l memAlloc(Size.l) : Exception()
                Protected *mem
                *mem = AllocateMemory(Size)
                If Not *mem
                  Throw(#ALLOCATION_FAILED)
                EndIf
                ProcedureReturn *mem
              EndProcedure
              
              Procedure.l fileRead(name.s) : Exception()
                Protected file.l
                file = ReadFile(#PB_Any, name)
                If Not file
                  Throw(#READFILE_FAILED)
                EndIf
                ProcedureReturn file
              EndProcedure
              
              Procedure.l winOpen() : Exception()
                Protected win.l
                win = OpenWindow(#PB_Any, 0, 0, 200, 200, "")
                If Not win
                  Throw(#OPENWINDOW_FAILED)
                EndIf
                ProcedureReturn win
              EndProcedure
              
              
              Try() ;>
                winOpen()
                *mem = memAlloc(20)
                CatchException()
                PokeS(*mem, "c:\lol")
                
                file = fileRead(PeekS(*mem))
                CatchException()
                WriteString(file, "lol")
              EndTry() ;<
              
              Catch() ;>
                Debug "exception!!"
              EndCatch() ;<
              
              ; IDE Options = PureBasic v4.02 (Windows - x86)
              ; Folding = --


              На сях видел аналогичное, пример поищите сами.
              Ответить
      • а из функции как выбрасывать?
        Ответить
        • Хз. Без костылей такое не запилиит, и совместимость будет нулевая.
          В винде можно вызвать API RaiseException.
          Ответить
          • В форте есть доступ к стеку возвратов, слова для работы с исключениями полноценно реализуются на самом же форте: CATCH сохраняет состояние стека развратов и зовет слово, THROW его восстанавливает и делает возврат, таким образом попадаем туда, откуда вызвали CATCH.
            Ответить
      • Забавно, что реализация исключений и сделана как раз с помощью прыжков
        И даже SEH
        Ответить

    Добавить комментарий