Size: a a a

2021 February 21

КГ

Константин Грачев... in PHP
Sergey Protko
Ну или php код который вызовет спгфолт какой)
Ля или норм почитал. Ой все кароч
источник

SP

Sergey Protko in PHP
ну короч

try {
  // developers would find a way to break things
} catch(\Throwable $error) {
  // must be executed
}


суть такая. Как бы "запасной" вариант всеравно есть, мол я планирую если сообщение было ределиверед (то есть небыло ack) сразу игнорировать и уже выполнять каждый обработчик в отдельности. Просто стало любопытно "а насколько вообще вероятен такой сценарий". У меня в былые времена выходило по памяти так уходить но судя по всему сейчас это не столь просто сделать + в любом случае на начальном этапе обработки ошибки мы дропаем любой стэйт что б нам хватило..
источник

VC

Vladimir Chernyshev in PHP
Sergey Protko
Ребят, у меня странный вопрос. Ищу примеры ситуаций когда невозможно словить ошибку в try catch. Мол странные и страшные вещи которые вызовут Крэш без возможности его обработать.
чисто для дебага хэндлера - ворнинги и нотисы всякие не бросают Error
источник

VC

Vladimir Chernyshev in PHP
Или из pecl что-то старое поставить и дернуть )
источник

AS

Anton Shabouta in PHP
Sergey Protko
ну короч

try {
  // developers would find a way to break things
} catch(\Throwable $error) {
  // must be executed
}


суть такая. Как бы "запасной" вариант всеравно есть, мол я планирую если сообщение было ределиверед (то есть небыло ack) сразу игнорировать и уже выполнять каждый обработчик в отдельности. Просто стало любопытно "а насколько вообще вероятен такой сценарий". У меня в былые времена выходило по памяти так уходить но судя по всему сейчас это не столь просто сделать + в любом случае на начальном этапе обработки ошибки мы дропаем любой стэйт что б нам хватило..
throw в деструкторе на ум приходит
источник

SP

Sergey Protko in PHP
Vladimir Chernyshev
чисто для дебага хэндлера - ворнинги и нотисы всякие не бросают Error
но можно настроить и отсутствие крэша процесса в этом случае. Так что не страшно.
источник

SP

Sergey Protko in PHP
Anton Shabouta
throw в деструкторе на ум приходит
хм... интересно. Тип если мы в catch секции ресетнем ресурсы и будет вызов деструктора?
источник

NO

Nex Otaku in PHP
Ошибки синтаксиса некоторые насколько помню убивали интерпретатор с невозможностью отловить даже через Throwable.
источник

NO

Nex Otaku in PHP
Под рукой примера нет, давно было.
источник

AS

Anton Shabouta in PHP
Sergey Protko
хм... интересно. Тип если мы в catch секции ресетнем ресурсы и будет вызов деструктора?
<?php

class A {
   public function __destruct()
   {
       throw new \RuntimeException('Catch me if you can');
   }
}

try {
  $a = new A();
} catch(\Throwable $error) {
  echo $error->getMessage(); // Oops...
}
источник

ИЛ

Иван Лещёв in PHP
Anton Shabouta
<?php

class A {
   public function __destruct()
   {
       throw new \RuntimeException('Catch me if you can');
   }
}

try {
  $a = new A();
} catch(\Throwable $error) {
  echo $error->getMessage(); // Oops...
}
ну это уровнем выше поймается
или если ансет будет в трае
источник

ИЛ

Иван Лещёв in PHP
если надо гарантировано сломать, то надо пробовать стек переполнить или память сожрать всю
источник

VC

Vladimir Chernyshev in PHP
или мемори лимит близко к нулю )
источник

MM

Maksim Masiukevich in PHP
Нррмальным эррор хендлерам это уже давно проблем не доставляет
источник

MM

Maksim Masiukevich in PHP
Ед способ - die поставить) все прочее - решаемая херня
источник

КГ

Константин Грачев... in PHP
Maksim Masiukevich
Ед способ - die поставить) все прочее - решаемая херня
А поч раньше была проблема?
источник

SP

Sergey Protko in PHP
Maksim Masiukevich
Нррмальным эррор хендлерам это уже давно проблем не доставляет
окей, допустим мы сделали так что эррор хэндлер все же вызовется. Давай попробуем опровергнуть предположение что код вызвавший ошибку приведет систему в состояние при которой твой эррор хэндлер не сможет зарекавериться и сделать то что надо)
источник

AL

Anton Lakotka in PHP
Sergey Protko
Ребят, у меня странный вопрос. Ищу примеры ситуаций когда невозможно словить ошибку в try catch. Мол странные и страшные вещи которые вызовут Крэш без возможности его обработать.
я могу только стандартные fatal error-ы вспомнить. типа memory limit и script timeout.  ну или в самом примитивном виде die или еще какой-нибудь тупой exit. от такого нет приема.

я так понимаю ты хочешь написать какой-то супер секьюрный рекавери?
источник

SP

Sergey Protko in PHP
Anton Lakotka
я могу только стандартные fatal error-ы вспомнить. типа memory limit и script timeout.  ну или в самом примитивном виде die или еще какой-нибудь тупой exit. от такого нет приема.

я так понимаю ты хочешь написать какой-то супер секьюрный рекавери?
тип того. С out of memory я пытаюсь подобрать сценарий при котором мой рекавери зафэйлится. Если утечка пошла внутри обработчика то в целом исключение я поймаю и пока не вышло "уронить процесс".
источник

SP

Sergey Protko in PHP
p.s. у меня сча работает чуть по другому (такая возможность просто исключена в принципе) но @desper1989 раззодорил тем что "а хули паришься можно ж по другому". Вот и думаю при каких ситуациях у меня не выйдет захэндлить отложенные ретраи
источник