Информация об изменениях

Сообщение Re[2]: обработка ошибок от 08.04.2022 12:37

Изменено 08.04.2022 13:19 MadHuman

Re[2]: обработка ошибок
Здравствуйте, vaa, Вы писали:


vaa>еще можно без спец искл.

vaa>
vaa>(bool, string) ValidateArgOne(string arg)
vaa>{
vaa>    .....
vaa>    return (false, "Ошибка");
vaa>}
vaa>

точно! по моему лучший вариант. вместо исключения возвращать Result, аля ФП F# подход с Result<'ok, 'err> , я ведь даже его знал.. но не сразу вспомнил
и волки сыты и овцы целы!

type ErrorKind = InvalidArg of string * string
type Result = Ok | Error of ErrorKind

let getThing arg1 = 
  //bla bla
  if not (some condition) then 
    Error("arg1", "arg1 invalid")
  else
    //do ok work
    Ok
Re[2]: обработка ошибок
Здравствуйте, vaa, Вы писали:


vaa>еще можно без спец искл.

vaa>
vaa>(bool, string) ValidateArgOne(string arg)
vaa>{
vaa>    .....
vaa>    return (false, "Ошибка");
vaa>}
vaa>

точно! по моему лучший вариант. вместо исключения возвращать Result, аля ФП F# подход с Result<'ok, 'err> , я ведь даже его знал.. но не сразу вспомнил
и волки сыты и овцы целы!

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

type ErrorKind = InvalidArg of string * string
type Result = Ok | Error of ErrorKind

let getThing arg1 = 
  //bla bla
  if not (some condition) then 
    Error("arg1", "arg1 invalid")
  else
    //do ok work
    Ok