Size: a a a

2ch /pr/ise #staythefuckhome

2020 May 17

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
зацени что я придумал
источник

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
func mustError(t *testing.T, i int) error {
ƒ, π, ø := Ø()

ƒ("action 1", func() error {
 if i != 1 {
  return nil
 }

 if err := alwaysErrors(); ø(err) {
  // error happened
 }

 return nil
})

ƒ("action 2", func() (err error) {
 if i != 2 {
  return nil
 }

 if err = alwaysErrors(); ø(err) {
  return
 }

 return nil
})

ƒ("action 3", func() error {
 if i != 3 {
  return nil
 }

 err := alwaysErrors()
 if ø(err) {
  return err
 }

 return nil
})

return π()
}
источник

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
позволяет обрабатывать ошибки пайпалайном
источник

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
если один из пайплайнов валится, то дальше не продолжает
источник

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
ƒ() выполняет этап пайплайна
источник

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
ø() возвращает true и автоматически фейлит этап, если ошибка не nil
источник

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
π() собирает ошибку с фейла
источник

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
хотя я сейчас подумал, на самом деле от π можно избавиться
источник

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
сам пайплайн может быть ошибкой!
источник

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
а нет не может быть
источник

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
тогда он всегда будет не nil
источник

S

Sooqa in 2ch /pr/ise #staythefuckhome
Сделай так чтобы весь экспрешон фейлился если ошибка происходит или нил
источник

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
Sooqa
Сделай так чтобы весь экспрешон фейлился если ошибка происходит или нил
?
источник

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
я думал знаешь что сделать? чтобы ø(err) паниковало
источник

S

Sooqa in 2ch /pr/ise #staythefuckhome
<failable_expr> or <expr>
источник

S

Sooqa in 2ch /pr/ise #staythefuckhome
В го операторы естт
источник

S

Sooqa in 2ch /pr/ise #staythefuckhome
?
источник

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
func mustError(t *testing.T, i int) (err error) {
ƒ, π, ø := Ø()
defer π(err)

ƒ("action 1", func() error {
 if i != 1 {
  return nil
 }

 if err := alwaysErrors()
 ø(err)

 return nil
})
источник

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
тогда можно было бы делать просто вот так, без всяких if
источник

𝚙

𝚙∨¬𝚙 in 2ch /pr/ise #staythefuckhome
но я подумал что на самом деле в большинстве случаев ты хочешь как-то хендлить ошибки
источник