LINUX.ORG.RU

golang - можно ли узнать, была ли паника?

 ,


0

2

Если я всё правильно понял, то:

  • вызвать panic с аргументом nil вполне возможно.
  • при этом recover вернёт nil. Также recover возвращает nil при отсутствии паники. То есть, если есть recover, то невозможно определить, была ли вызвана паника с nil внутри данного куска кода или же код исполнился нормально.

Я всё правильно понял?

★★★★★

Последнее исправление: beastie (всего исправлений: 2)

Ответ на: комментарий от anonymous

Спасибо.

«You are correct that there is no way to differentiate these cases.»

den73 ★★★★★
() автор топика

А зачем тебе вообще делать panic(nil)?

derlafff ★★★★★
()

Можно ведь перед выходом из функции присвоить локальной переменной какое-нибудь значение, а defer-нутую функцию сделать замыканием и проверять из неё это значение.

Но проще не делать panic(nil).

proud_anon ★★★★★
()

Народ, спасибо, я всё понял. С глобальной точки зрения меня интересует, что, как и почему сделано в голанге необычного (исключения явно сделаны необычно). Соответственно, если я вижу что-то странное, сразу три версии: это ошибка конструирования языка, это для чего-то сделано с умыслом, это я что-то не понял в описании. Третью версию уже можно откинуть. Между первой и второй пока неясно, что выбрать. Хотя если бы я хотел сделать такое «невидимое исключение», я бы не стал называть его именем nil.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от beastie

Ты близок к игнору, потому что написал херню.

den73 ★★★★★
() автор топика
Ответ на: комментарий от derlafff

Вся суть goвна, лол. Спасибо, сохранил.

anonymous
()
18 июня 2016 г.
Ответ на: комментарий от den73

это ошибка конструирования языка

имхо если в голэнге есть несообразности явно не удобные рядовому кодеру на данном языке то скорее они есть с умыслом выгодным гуглю как фирме чем «ошибки конструирования языка» ибо по факту гуглю вроде как потребовалось вариант «компилируемого питона»....

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao

Т.е. для удобства портирования кода с питона? Есть какая-то фича в питоне, которую они этим эмулировали?

den73 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.