LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Ну кстати, если читать с конца, то и ничего. В общем-то, я не понял, чем эта статья отличается от моей точки зрения. Там приведён и пример фреймворка gin (24000 звёзд), который обрабатывает ошибки именно с помощью паники, перехватываемой внутри горутины.

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

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

Моё мнение - паника должна быть либо остановлена в той горутине, где она возникла, либо должна приводить к остановке всего приложения (опять же, решение принимается в горутине). Может быть, есть случаи, когда это не подходит, но для большинства случаев это должно сработать.

И самое главное - ну нет ничего особенного тут в голанге. Язык как язык. С кодами ошибок и исключениями. Какой из вариантов использовать - должен решать разработчик, а не авторы языка.

Исправление den73, :

Ну кстати, если читать с конца, то и ничего. В общем-то, я не понял, чем эта статья отличается от моей точки зрения. Там приведён и пример фреймворка gin (24000 звёзд), который обрабатывает ошибки именно с помощью паники, перехватываемой внутри горутины.

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

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

Моё мнение - паника должна быть либо остановлена в той горутине, где она возникла, либо должна приводить к остановке всего приложения (опять же, решение принимается в горутине). Может быть, есть случаи, когда это не подходит, но для большинства случаев это должно сработать.

И самое главное - ну нет ничего особенного тут в голанге. Язык как язык. С кодами ошибок и исключениями.

Исправление den73, :

Ну кстати, если читать с конца, то и ничего. В общем-то, я не понял, чем эта статья отличается от моей точки зрения. Там приведён и пример фреймворка gin (24000 звёзд), который обрабатывает ошибки именно с помощью паники, перехватываемой внутри горутины.

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

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

Моё мнение - паника должна быть либо остановлена в той горутине, где она возникла, либо должна приводить к остановке всего приложения (опять же, решение принимается в горутине). Может быть, есть случаи, когда это не подходит, но для большинства случаев это должно сработать.

И самое главное - ну нет ничего особенного тут в голанге. Язык как язык. С кодами ошибок и исключениями.

Исходная версия den73, :

Ну кстати, если читать с конца, то и ничего. В общем-то, я не понял, чем эта статья отличается от моей точки зрения. Там приведён и пример фреймворка gin (24000 звёзд), который обрабатывает ошибки именно с помощью паники, перехватываемой внутри горутины.

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

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

Моё мнение - паника должна быть либо остановлена в той горутине, где она возникла, либо должна приводить к остановке всего приложения (опять же, решение принимается в горутине). Может быть, есть случаи, когда это не подходит, но для большинства случаев это должно сработать.

И самое главное - ну нет ничего особенного тут в голанге. Язык как язык. С кодами ошибок и исключениями.