История изменений
Исправление den73, (текущая версия) :
Ну кстати, если читать с конца, то и ничего. В общем-то, я не понял, чем эта статья отличается от моей точки зрения. Там приведён и пример фреймворка gin (24000 звёзд), который обрабатывает ошибки именно с помощью паники, перехватываемой внутри горутины.
Единственно, что мне не приходило в голову просить «я хочу, чтобы все ошибки обрабатывались в одном месте», потому что это неправильно, ненужно и невозможно.
Помещать ошибки в канал, как тут предлагается, кажется глупым. Их нужно, как минимум отчасти, обрабатывать в самой горутине. Например, мы можем принять, что разыменование нулевого указателя - это фатальная ошибка. В этом случае перехват паники, превращение его в ошибку и отправка ошибки в канал позволит повреждённому приложению работать ещё неопределённо долгов время, а это нельзя допускать.
Моё мнение - паника должна быть либо остановлена в той горутине, где она возникла, либо должна приводить к остановке всего приложения (опять же, решение принимается в горутине). Может быть, есть случаи, когда это не подходит, но для большинства случаев это должно сработать.
И самое главное - ну нет ничего особенного тут в голанге. Язык как язык. С кодами ошибок и исключениями. Какой из вариантов использовать - должен решать разработчик, а не авторы языка.
Исправление den73, :
Ну кстати, если читать с конца, то и ничего. В общем-то, я не понял, чем эта статья отличается от моей точки зрения. Там приведён и пример фреймворка gin (24000 звёзд), который обрабатывает ошибки именно с помощью паники, перехватываемой внутри горутины.
Единственно, что мне не приходило в голову просить «я хочу, чтобы все ошибки обрабатывались в одном месте», потому что это неправильно, ненужно и невозможно.
Помещать ошибки в канал, как тут предлагается, кажется глупым. Их нужно, как минимум отчасти, обрабатывать в самой горутине. Например, мы можем принять, что разыменование нулевого указателя - это фатальная ошибка. В этом случае перехват паники, превращение его в ошибку и отправка ошибки в канал позволит повреждённому приложению работать ещё неопределённо долгов время, а это нельзя допускать.
Моё мнение - паника должна быть либо остановлена в той горутине, где она возникла, либо должна приводить к остановке всего приложения (опять же, решение принимается в горутине). Может быть, есть случаи, когда это не подходит, но для большинства случаев это должно сработать.
И самое главное - ну нет ничего особенного тут в голанге. Язык как язык. С кодами ошибок и исключениями.
Исправление den73, :
Ну кстати, если читать с конца, то и ничего. В общем-то, я не понял, чем эта статья отличается от моей точки зрения. Там приведён и пример фреймворка gin (24000 звёзд), который обрабатывает ошибки именно с помощью паники, перехватываемой внутри горутины.
Единственно, что мне не приходило в голову просить «я хочу, чтобы все ошибки обрабатывались в одном месте», потому что это неправильно, ненужно и невозможно.
Помещать ошибки в канал, как тут предлагается, кажется глупым. Их нужно, как минимум отчасти, обрабатывать в самой горутине. Например, мы можем принять, что разыменование нулевого указателя - это фатальная ошибка. В этом случае отправка ошибки в канал позволит повреждённому приложению работать ещё неопределённо долгов время, а это нельзя допускать.
Моё мнение - паника должна быть либо остановлена в той горутине, где она возникла, либо должна приводить к остановке всего приложения (опять же, решение принимается в горутине). Может быть, есть случаи, когда это не подходит, но для большинства случаев это должно сработать.
И самое главное - ну нет ничего особенного тут в голанге. Язык как язык. С кодами ошибок и исключениями.
Исходная версия den73, :
Ну кстати, если читать с конца, то и ничего. В общем-то, я не понял, чем эта статья отличается от моей точки зрения. Там приведён и пример фреймворка gin (24000 звёзд), который обрабатывает ошибки именно с помощью паники, перехватываемой внутри горутины.
Единственно, что мне не приходило в голову просить «я хочу, чтобы все ошибки обрабатывались в одном месте», потому что это неправильно, ненужно и невозможно.
Помещать ошибки в канал, как тут предлагается, кажется глупым. Их нужно, как минимум отчасти, обрабатывать в самой горутине. Например, мы можем принять, что разыменование нулевого указателя - это фатальная ошибка. В этом случае отправка ошибки в канал позволит приложению работать ещё неопределённо долгов время.
Моё мнение - паника должна быть либо остановлена в той горутине, где она возникла, либо должна приводить к остановке всего приложения (опять же, решение принимается в горутине). Может быть, есть случаи, когда это не подходит, но для большинства случаев это должно сработать.
И самое главное - ну нет ничего особенного тут в голанге. Язык как язык. С кодами ошибок и исключениями.