Files
shop-server/docs/superpowers/plans/2026-05-27-empty-catch-blocks.md
T
2026-05-27 20:56:08 +05:00

4.0 KiB

Empty Catch Blocks — Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development or superpowers:executing-plans.

Goal: Добавить логирование во все пустые catch-блоки (17 мест), убрать // ignore комментарии.

Architecture: В каждом catch добавить console.warn (клиент) или request.log.error (сервер) с контекстным сообщением. Минимальные, безопасные изменения.

Tech Stack: TypeScript, JavaScript, ESLint (no-console разрешает warn/error/info)

Depends on: none


Task 1: Пустые catch на клиенте — persist-token.ts (3 места)

Files:

  • Modify: client/src/shared/model/persist-token.ts

  • Step 1: Read file to find empty catch blocks

Run: read client/src/shared/model/persist-token.ts

  • Step 2: Add console.warn to each catch

Each catch { /* ignore */ } becomes:

catch (err) {
  console.warn('[persist-token] Failed to ...', err)
}

Specific messages based on context:

  • localStorage.getItem error → '[persist-token] Failed to read from localStorage'

  • localStorage.setItem error → '[persist-token] Failed to write to localStorage'

  • JSON.parse error → '[persist-token] Failed to parse stored value'

  • Step 3: Run lint

Run: cd client && npm run lint Expected: PASS

  • Step 4: Commit
git add client/src/shared/model/persist-token.ts
git commit -m "fix: add error logging to persist-token catch blocks"

Task 2: Пустые catch на клиенте — theme-controller.tsx (2 места)

Files:

  • Modify: client/src/shared/model/theme-controller.tsx

  • Step 1: Read file

Run: read client/src/shared/model/theme-controller.tsx

  • Step 2: Add console.warn to each catch
catch (err) {
  console.warn('[theme] Failed to ...', err)
}
  • Step 3: Run lint

  • Step 4: Commit

git add client/src/shared/model/theme-controller.tsx
git commit -m "fix: add error logging to theme-controller catch blocks"

Task 3: Пустые catch на клиенте — CookieConsentBanner (2 места)

Files:

  • Modify: client/src/widgets/navigation-drawer/ui/CookieConsentBanner.tsx

  • Step 1: Read file

  • Step 2: Add console.warn

catch (err) {
  console.warn('[cookie-consent] Failed to ...', err)
}
  • Step 3: Run lint

  • Step 4: Commit

git add client/src/widgets/navigation-drawer/ui/CookieConsentBanner.tsx
git commit -m "fix: add error logging to CookieConsentBanner catch blocks"

Task 4: Пустые catch на клиенте — SseProvider.tsx

Files:

  • Modify: client/src/app/SseProvider.tsx

  • Step 1: Read file, find empty catch

  • Step 2: Add console.warn

catch (err) {
  console.warn('[sse] Connection error:', err)
}
  • Step 3: Run lint

  • Step 4: Commit

git add client/src/app/SseProvider.tsx
git commit -m "fix: add error logging to SseProvider catch block"

Task 5: Пустые catch на сервере

Files: (find exact paths from exploration, likely in admin routes)

  • Step 1: Find all empty catch blocks in server/src/

Run: rg 'catch\s*\{' server/src/ --include '*.js'

  • Step 2: Add request.log.error to each
catch (err) {
  request.log.error({ err }, 'Failed to [operation description]')
}
  • Step 3: Run lint

Run: cd server && npm run lint Expected: PASS

  • Step 4: Run tests

Run: cd server && npm test Expected: PASS

  • Step 5: Commit
git add server/src/
git commit -m "fix: add error logging to server catch blocks"

Task 6: Финальная проверка

  • Step 1: Run all lints + tests
cd client && npm run lint && npm test
cd server && npm run lint && npm test
  • Step 2: Verify no new ESLint errors

Expected: PASS all