Learning
Clean Code

Hibakezelés

Tiszta hibakezelés kivételekkel, specifikus hibatípusokkal és naplózással.

Hibakezelés (Error handling)

A hibakezelés nem opcionális kiegészítő – szerves része a tiszta kódnak. Egy rosszul kezelt hiba ugyanolyan rossz, mint egy bug.

Használj kivételeket, ne hibajelző return értékeket

// ❌ Rossz – a hívónak ellenőriznie kell a visszatérési értéket
function divide(a, b) {
  if (b === 0) return null;
  return a / b;
}

const result = divide(10, 0);
if (result === null) {
  console.log('Error');
}
// ✅ Javított – explicit kivételkezelés
function divide(a, b) {
  if (b === 0) {
    throw new Error('Division by zero is not allowed');
  }
  return a / b;
}

try {
  const result = divide(10, 0);
} catch (error) {
  console.error('Calculation failed:', error.message);
}

Ne nyeld el a hibákat

// ❌ Rossz – a hiba eltűnik, a fejlesztő soha nem tudja meg mi történt
try {
  riskyOperation();
} catch (e) {
  // semmi
}
// ✅ Javított – a hiba naplózva van, és megfelelően kezelt
try {
  riskyOperation();
} catch (error) {
  logger.error('riskyOperation failed', { error: error.message, stack: error.stack });
  throw error; // vagy fallback logika
}

Specifikus hibatípusok

// ❌ Rossz – általános Error, kevés kontextus
throw new Error('Something went wrong');
// ✅ Javított – saját hibaosztályok egyértelmű üzenettel
class UserNotFoundError extends Error {
  constructor(userId) {
    super(`User with ID "${userId}" was not found`);
    this.name = 'UserNotFoundError';
    this.userId = userId;
  }
}

throw new UserNotFoundError(42);

Ne add vissza a null-t mindenhol

// ❌ Rossz – a null ellenőrzés az egész kódon átterjedhet
function getUser(id) {
  const user = db.find(id);
  return user || null;
}

const user = getUser(5);
if (user !== null) {
  if (user.profile !== null) {
    console.log(user.profile.name);
  }
}
// ✅ Javított – dobjon kivételt, vagy használj Optional pattern-t
function getUser(id) {
  const user = db.find(id);
  if (!user) throw new UserNotFoundError(id);
  return user;
}

Rövid összefoglaló

  • Használj kivételeket null/hibakód visszatérési értékek helyett.
  • Soha ne nyeld el a hibákat – naplózz és/vagy dobd tovább.
  • Hozz létre specifikus hibaosztályokat a pontosabb hibakezelés érdekében.

On this page