Size: a a a

2019 December 17

OJ

O . J in pro.elixir
Хотя да, так только через патч
источник

OJ

O . J in pro.elixir
Нативно только все же хендлером можно обработать
источник

ЛЛ

Логичный Лесник in pro.elixir
Simon Khaskelberg
Ну так получается, что в go тебе нужно написать defer функцию которая выловит панику и обработает ее. В PHP тебе нужно написать error_handler который выловит notice и обработает его
Проще сразу обработать. Пока что не доводилось восстанавливать выполнение после паники. Хотя есть идея, где это можно использовать в проекте.
источник

SK

Simon Khaskelberg in pro.elixir
Ну в PHP тоже проще сразу обработать
источник

ЛЛ

Логичный Лесник in pro.elixir
Simon Khaskelberg
Ну в PHP тоже проще сразу обработать
Вообще ни разу. Потому что каждая "фича" пыха может падать по разному и тебе нужно учитывать все эти нюансы.
источник

ЛЛ

Логичный Лесник in pro.elixir
Некоторые функции возвращают -1 при неудаче...
источник

SK

Simon Khaskelberg in pro.elixir
И? Ты потом должен сравнить результат функции с -1, в отличие от golang где везде нужно сравнивать результат err с nil
источник

ЛЛ

Логичный Лесник in pro.elixir
Simon Khaskelberg
И? Ты потом должен сравнить результат функции с -1, в отличие от golang где везде нужно сравнивать результат err с nil
Да вообще без разницы что с чем сравнивать. Тут смысл в том, что нет одного подхода в пыхе для обработки ошибок. Каждая часть языка требует своего подхода к обработке и это всё приводит к тому, что проще забить или заглушить, чем обрабатывать каждую ошибку.
источник

ЛЛ

Логичный Лесник in pro.elixir
Ну взять тот же isset
источник

ЛЛ

Логичный Лесник in pro.elixir
Для проверки имеющихся значений. А потом ты эту же переменную проверяешь на нулл... А потом если не нулл, то ещё проверишь на корректность данных и тогда ты сможешь с ней что-то сделать.
источник

ЛЛ

Логичный Лесник in pro.elixir
А если какой-то этап пропустил, то получаешь ошибку, которую даже не сможешь перехватит. В. try catch.
источник

ЛЛ

Логичный Лесник in pro.elixir
И где тут удобство в отлавливании ошибок и логировании?
источник

SK

Simon Khaskelberg in pro.elixir
isset проверяет на null сам. ну это так, к слову
источник

ЛЛ

Логичный Лесник in pro.elixir
Simon Khaskelberg
isset проверяет на null сам. ну это так, к слову
Isset и is_null не эквивалентны, на сколько я помню.
источник

SK

Simon Khaskelberg in pro.elixir
Ну а в go вместо глобального try catch придется рекаверить панику
источник

SK

Simon Khaskelberg in pro.elixir
package main

import "fmt"

func main() {
   var a [5]int
   c:= 8
   b:= a[c]
   fmt.Println(b)
}
источник

ЛЛ

Логичный Лесник in pro.elixir
Simon Khaskelberg
Ну а в go вместо глобального try catch придется рекаверить панику
Говорю же, я ни разу этого ещё ни делал.
источник

SK

Simon Khaskelberg in pro.elixir
Вот аналогичный пример тому, что ты скинул на php
источник

SK

Simon Khaskelberg in pro.elixir
И тут будет паника
источник

ЛЛ

Логичный Лесник in pro.elixir
Это не совсем эквивалентный пример, так как в PHP примере я попытался обработать ошибку и у меня это не получилось, а тут мы напрямую вызываем панику.
источник