# 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: ```ts 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** ```bash 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** ```ts catch (err) { console.warn('[theme] Failed to ...', err) } ``` - [ ] **Step 3: Run lint** - [ ] **Step 4: Commit** ```bash 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** ```ts catch (err) { console.warn('[cookie-consent] Failed to ...', err) } ``` - [ ] **Step 3: Run lint** - [ ] **Step 4: Commit** ```bash 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** ```ts catch (err) { console.warn('[sse] Connection error:', err) } ``` - [ ] **Step 3: Run lint** - [ ] **Step 4: Commit** ```bash 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** ```js 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** ```bash git add server/src/ git commit -m "fix: add error logging to server catch blocks" ``` --- ### Task 6: Финальная проверка - [ ] **Step 1: Run all lints + tests** ```bash cd client && npm run lint && npm test cd server && npm run lint && npm test ``` - [ ] **Step 2: Verify no new ESLint errors** Expected: PASS all