#статья дня
Ну и раз я уже начал писать про нашу компанию, вот сегодняшняя статья дня — первая в корпоративном блоге на dev.to.
Мой коллега James Elderfield написал о простой и легкоподдерживаемой обработке ошибок в TypeScript: https://dev.to/supermetrics/simple-and-maintainable-error-handling-in-typescript-56lm
Круто работать с людьми, которые в чём-то лучше тебя. Только так и можно развиваться :)
#typescript #error #errorhandling
Ну и раз я уже начал писать про нашу компанию, вот сегодняшняя статья дня — первая в корпоративном блоге на dev.to.
Мой коллега James Elderfield написал о простой и легкоподдерживаемой обработке ошибок в TypeScript: https://dev.to/supermetrics/simple-and-maintainable-error-handling-in-typescript-56lm
Круто работать с людьми, которые в чём-то лучше тебя. Только так и можно развиваться :)
#typescript #error #errorhandling
DEV Community
Simple and maintainable error-handling in TypeScript
Sometimes things fail — that's a fact of life and programming. So as a programmer, you're going to ha...
#фишка дня
Чота меня подзадолбало писать try-catch на каждый async-await вызов.
С “cырыми“ промисами как-то… чище на уровне синтаксиса: then-catch и всё.
Но вот тут пригодились тестовые задания на собеседованиях. У одного инженера я увидел подход, что на иллюстрации. Очень похоже на то, как возвращаются ошибки в Go.
В общем, я почитал об использовании такого подхода и остался доволен.
P. S. конечно, есть и другие примеры: https://gist.github.com/fnky/0a6cd5f39a7ad0ace79a7a4f5c999691
#js #async #await #promise #error #typescript
Чота меня подзадолбало писать try-catch на каждый async-await вызов.
С “cырыми“ промисами как-то… чище на уровне синтаксиса: then-catch и всё.
Но вот тут пригодились тестовые задания на собеседованиях. У одного инженера я увидел подход, что на иллюстрации. Очень похоже на то, как возвращаются ошибки в Go.
В общем, я почитал об использовании такого подхода и остался доволен.
P. S. конечно, есть и другие примеры: https://gist.github.com/fnky/0a6cd5f39a7ad0ace79a7a4f5c999691
#js #async #await #promise #error #typescript
#фишка дня
Чота меня подзадолбало писать try-catch на каждый async-await вызов.
С “cырыми“ промисами как-то… чище на уровне синтаксиса: then-catch и всё.
Но вот тут пригодились тестовые задания на собеседованиях. У одного инженера я увидел подход, что на иллюстрации. Очень похоже на то, как возвращаются ошибки в Go.
В общем, я почитал об использовании такого подхода и остался доволен.
P. S. конечно, есть и другие примеры: https://gist.github.com/fnky/0a6cd5f39a7ad0ace79a7a4f5c999691
#js #async #await #promise #error #typescript
Чота меня подзадолбало писать try-catch на каждый async-await вызов.
С “cырыми“ промисами как-то… чище на уровне синтаксиса: then-catch и всё.
Но вот тут пригодились тестовые задания на собеседованиях. У одного инженера я увидел подход, что на иллюстрации. Очень похоже на то, как возвращаются ошибки в Go.
В общем, я почитал об использовании такого подхода и остался доволен.
P. S. конечно, есть и другие примеры: https://gist.github.com/fnky/0a6cd5f39a7ad0ace79a7a4f5c999691
#js #async #await #promise #error #typescript
👍15🤔11👎2
#фишка дня
Как узнать, откуда была вызвана интересующая нас функция?
Правильный ответ — воспользоваться дебаггером.
Или console.trace().
Но это не всегда приемлемо. Мне вот нужно было иметь в логах название источника либо часть трассировки.
Если не используется ‘use strict’ (почему, кстати?) можно воспользоваться нестандартным свойством Function.caller:
…или устаревшим arguments.callee.caller
Но это не выведет весь стек и вообще в нормальном коде не сработает. Поэтому, можно красиво схитрить сымытировав ошибку:
Тоже нестандартно, зато как красиво. Оттуда уже можно и имя первого родителя вытащить регуляркой.
#js #caller #error #stack
Как узнать, откуда была вызвана интересующая нас функция?
Правильный ответ — воспользоваться дебаггером.
Или console.trace().
Но это не всегда приемлемо. Мне вот нужно было иметь в логах название источника либо часть трассировки.
Если не используется ‘use strict’ (почему, кстати?) можно воспользоваться нестандартным свойством Function.caller:
function hello() {
console.log(“caller is " + hello.caller);
}
…или устаревшим arguments.callee.caller
function hello() {
console.log(“caller is " + arguments.callee.caller.toString());
}Но это не выведет весь стек и вообще в нормальном коде не сработает. Поэтому, можно красиво схитрить сымытировав ошибку:
function Hello() {
console.log(“caller stack”, new Error().stack);
}Тоже нестандартно, зато как красиво. Оттуда уже можно и имя первого родителя вытащить регуляркой.
#js #caller #error #stack
👍11🔥9🤔1
#фишка дня
Как узнать, откуда была вызвана интересующая нас функция?
Правильный ответ — воспользоваться дебаггером.
Или console.trace().
Но это не всегда приемлемо. Мне вот нужно было иметь в логах название источника либо часть трассировки.
Если не используется ‘use strict’ (почему, кстати?) можно воспользоваться нестандартным свойством Function.caller:
…или устаревшим arguments.callee.caller
Но это не выведет весь стек и вообще в нормальном коде не сработает. Поэтому, можно красиво схитрить сымытировав ошибку:
Тоже нестандартно, зато как красиво. Оттуда уже можно и имя первого родителя вытащить регуляркой.
#js #caller #error #stack #бородач
Как узнать, откуда была вызвана интересующая нас функция?
Правильный ответ — воспользоваться дебаггером.
Или console.trace().
Но это не всегда приемлемо. Мне вот нужно было иметь в логах название источника либо часть трассировки.
Если не используется ‘use strict’ (почему, кстати?) можно воспользоваться нестандартным свойством Function.caller:
function hello() {
console.log(“caller is " + hello.caller);
}
…или устаревшим arguments.callee.caller
function hello() {
console.log(“caller is " + arguments.callee.caller.toString());
}Но это не выведет весь стек и вообще в нормальном коде не сработает. Поэтому, можно красиво схитрить сымытировав ошибку:
function Hello() {
console.log(“caller stack”, new Error().stack);
}Тоже нестандартно, зато как красиво. Оттуда уже можно и имя первого родителя вытащить регуляркой.
#js #caller #error #stack #бородач
👍16
#заметка дня
Cloudflare стал так часто падать, блокируя доступ ко всему и вся, что хочешь-не хочешь приходится извлекать из этого хоть какую-то полезную информацию.
Ну, помимо того, что Rust не настолько и крут в руках посвеместно проникших вайб-кодеров, если верить соцсетям.
Но нас тут заинтересовало, зачем Cloudflare добивает стандартную страницу ошибки комментариями?
...не, ну ок, вроде оно само говорит, зачем. Но почему?
Дело в том, что если страница ошибки короче определённого минимального размера (обычно 512 байт), браузер скрывает её и показывает свою стандартную ошибку вида «This page cannot be displayed».
Очевидно, это не шибко-то и удобно: скрывает реальную причину проблемы, мешает автотестам. Собственно, в Internet Explorer была настройка скрытия дружелюбных страниц ошибок, а вот в Chrome так никогда и не сделали.
Да-да, динозаврик — это вот оно, оттуда. Очень весело, очень бесполезно.
Вот даже проблему в трекере подняли лет 15 назад: https://issues.chromium.org/issues/40361889, без подвижек.
На самом деле, добитие комментариями, конечно, не решение Cloudflare. Это работа сервера nginx: https://hg.nginx.org/nginx/file/release-1.6.0/src/http/ngx_http_special_response.c
Одобряем такое поведение, или динозаврик получше будет, котаны?
#nginx #cloudflare #error
Cloudflare стал так часто падать, блокируя доступ ко всему и вся, что хочешь-не хочешь приходится извлекать из этого хоть какую-то полезную информацию.
Ну, помимо того, что Rust не настолько и крут в руках посвеместно проникших вайб-кодеров, если верить соцсетям.
Но нас тут заинтересовало, зачем Cloudflare добивает стандартную страницу ошибки комментариями?
<!-- a padding to disable MSIE and Chrome friendly error page -->
...не, ну ок, вроде оно само говорит, зачем. Но почему?
Дело в том, что если страница ошибки короче определённого минимального размера (обычно 512 байт), браузер скрывает её и показывает свою стандартную ошибку вида «This page cannot be displayed».
Очевидно, это не шибко-то и удобно: скрывает реальную причину проблемы, мешает автотестам. Собственно, в Internet Explorer была настройка скрытия дружелюбных страниц ошибок, а вот в Chrome так никогда и не сделали.
Да-да, динозаврик — это вот оно, оттуда. Очень весело, очень бесполезно.
Вот даже проблему в трекере подняли лет 15 назад: https://issues.chromium.org/issues/40361889, без подвижек.
На самом деле, добитие комментариями, конечно, не решение Cloudflare. Это работа сервера nginx: https://hg.nginx.org/nginx/file/release-1.6.0/src/http/ngx_http_special_response.c
Одобряем такое поведение, или динозаврик получше будет, котаны?
#nginx #cloudflare #error
🤩8❤2👍2🫡1