170 похожих чатов

Здравствуйте! подскажите, какие накладные расходы несут за собой такай метод Вот

есть функция я её вызываю через try()
внутри функции я вызваю ещё и ещё и ещё функции, ну то есть ухожу вглубь, и в итоге, получил результат - неудовлетворительный и тогда бросаю EXCEPT
типо такой быстрый выход из вереницы функций, а не возвращать их все через return
Типо вроде как и стэк держится в раскрученном виде и потом его обратно сворачивать при исключении, а вроде и все функции через ретёрн делать, неудобно,
Может кто пояснить за эту тему?

35 ответов

15 просмотров

Всё понятно, не понятно в чём твой вопрос

это называется рекурсивный вызов

Андрей-Иванов Автор вопроса
Ilya Zviagin
Всё понятно, не понятно в чём твой вопрос

так делать норм? так и делают большие дяди?

какие накладные расходы несут за собой такай метод - какие-то накладные расходы несёт. Проблема в том, что альтернативы у тебя нет.

Андрей Иванов
так делать норм? так и делают большие дяди?

нет, не норм, опиши алгоритм нормально, оставь рекурсию школьникам на егэ

Андрей-Иванов Автор вопроса
Aniki Hi$ok@ 🌈 Z 🐀
нет, не норм, опиши алгоритм нормально, оставь рек...

там нет рекурсии, просто много функций уходящих вглубь, ну и челу лень как я уже говорил делать во всех функция return а просто бросает except

Андрей Иванов
там нет рекурсии, просто много функций уходящих вг...

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

Андрей-Иванов Автор вопроса
Ilya Zviagin
так делать нормально

а разве это не пагубно влияет на производительность? Типо насколько хуже станет откомпилированный код?

Ilya Zviagin
Если ошибка - надо выбрасывать исключение.

человек говорит что он в рекурсивной функции выбрасывает исключение, чтобы вернуться из неё

Так в итоге ты значение возвращаешь или ошибку выкидываешь?

Андрей-Иванов Автор вопроса
Ilya Zviagin
Если ошибка - надо выбрасывать исключение.

Так я же и говорю это не ошибка, как бы, ну то есть ошибка, результат получился плохой но как бы не stack overflow

Андрей-Иванов Автор вопроса
Alexander "Ternvein" Isaev
Так в итоге ты значение возвращаешь или ошибку вык...

ошибку бросаю, и на верхней функции ловлю, типо быстрый выход из вереницы функций

Андрей-Иванов Автор вопроса

я в чужом коде ковыряюсь, и вот увидел такой метод, хочу понять, он целесообразен или нет?

Андрей-Иванов Автор вопроса
Андрей-Иванов Автор вопроса
Aniki Hi$ok@ 🌈 Z 🐀
нет, так поступать не правильно

ответ не так прост, как мне кажется, этот код писал неглупый мужик

Андрей Иванов
а почему?

Потому что исключения — для ошибок. Как выше сказали, не надо их использовать для контроля потока выполнения.

Андрей Иванов
ответ не так прост, как мне кажется, этот код писа...

ну, видимо он просто верил что это быстро, но оно не быстро, потому что сделано не для этого

Андрей-Иванов Автор вопроса

ну да, так можно было и GOTO ебануть

Андрей Иванов
ну да, так можно было и GOTO ебануть

а всё из-за рекурсии, смотри до чего ты в итоге докатился, а в начале все выглядело вроде как нормально

Андрей-Иванов Автор вопроса
Aniki Hi$ok@ 🌈 Z 🐀
а всё из-за рекурсии, смотри до чего ты в итоге до...

где вы тут рекурсию увидели, я ни разу про неё не говорил?

Андрей Иванов
где вы тут рекурсию увидели, я ни разу про неё не ...

"Вот есть функция я её вызываю через try() внутри функции я вызваю ещё и ещё и ещё функции"

Андрей-Иванов Автор вопроса
Андрей Иванов
ну не ёё же саму, а другие

а в чём тогда проблема, все функции что-то да возвращают, само свернётся после последней

Андрей-Иванов Автор вопроса
Aniki Hi$ok@ 🌈 Z 🐀
а в чём тогда проблема, все функции что-то да возв...

ну вот там возвращаются всякие классы из каждой функции, всегда разные, большие типо может, а потом внизу бац и оказалось всё это неверно, и что? мне везде городить эти вот большие и разные типы, а наверху проверять его валидность?

Андрей Иванов
ну вот там возвращаются всякие классы из каждой фу...

std::option, да, проверять на валидность. Оно будет работать быстрее исключения

Андрей Иванов
ну вот там возвращаются всякие классы из каждой фу...

Бросай исключение. Критерий простой - приложение (код) может дальше работать ? Да - возвращай значение. Нет - кидай исключение.

Андрей Иванов
так делать норм? так и делают большие дяди?

Здравствуйте. Ну собственно в этом и есть механизм исключений. Раскручивание стека при срабатывании исключения - неотъемлемая часть механизма. Кроме того, многие считают хорошей практикой обрабатывать исключения на более высоком уровне вложенности вызова функций, по отношению к которому оно было выброшено. Да, поддержка самой способности выброса исключений несет дополнительные расходы. Именно поэтому и рекомендуется использовать ключевое слово noexcept по мере возможности.

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
32
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
25
Книга Юрова В.И пойдёт для обучения?
Botsman
24
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
> Примечательно, что новый владелец удаляет из GitHub любые жалобы, указывающие на подозрительную активность или смену владельца, и, видимо, рассчитывает на то, что пользовате...
Alex Sherbakov
1
а мы ещё не созрели до того, чтобы создать отдельный чатик про настройку редакторов?
Cheese Syrowiecki
16
И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
Всем привет! У меня почему-то по-разному отображается TListView в Debug и Release режимах (FireMonkey)! При запуске под Win приложения TListView заливается программо. в Debug ...
Александр COM
8
Ладно, ещё тупого спрошу. Код должен банально вывести значение регистра на консоль, на деле же не выводя ничего, просто оставляя нерабочую консоль (открыта, ничего не написан...
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
25
Hey there Which is the best Linux destro for developers (coding)? To my research on reddit, they said Linux mint is good for mid level spec and Ubuntu for high Lev hardwar...
Wiz 🪄
10
Карта сайта