에러 메시지

Error Message

무엇이 잘못됐고 어떻게 고치는지를 말해주는 문구. "오류가 발생했습니다"는 에러 메시지가 아니라 회피입니다.

다른 이름: Validation message
···
html
<div class="stage">
  <div class="pane bad"><span class="mark">✕</span><span class="label">Before</span>
    <div class="field err"><div class="finput"></div></div>
    <p class="copy err-copy" id="bt"></p>
    <p class="why" id="bw"></p></div>
  <div class="pane good"><span class="mark">✓</span><span class="label">After</span>
    <div class="field err"><div class="finput"></div></div>
    <p class="copy err-copy" id="gt"></p>
    <p class="why" id="gw"></p></div>
</div>
css
.stage{width:94%;height:88%;display:flex;gap:4%}
.pane{position:relative;flex:1;border-radius:14px;border:1px solid var(--line);background:var(--surface);padding:16px 14px 12px;display:flex;flex-direction:column;gap:8px}
.mark{position:absolute;top:10px;right:12px;font:800 16px/1 system-ui;color:var(--accent-2)}
.good .mark{color:var(--accent-3)}
.label{font:700 10px/1 monospace;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.finput{height:26px;border-radius:7px;border:1.5px solid var(--accent-2);background:var(--bg)}
.err-copy{margin:0;font:650 clamp(12px,3.2vmin,15px)/1.35 -apple-system,sans-serif;color:var(--accent-2)}
.why{margin:0;font:500 11px/1.3 -apple-system,sans-serif;color:var(--muted)}
js
const bt = document.getElementById('bt'), bw = document.getElementById('bw');
const gt = document.getElementById('gt'), gw = document.getElementById('gw');
const L = {
  ko: { bt: '오류가 발생했습니다', bw: '원인도 해결법도 없음', gt: '비밀번호는 8자 이상이어야 해요', gw: '정확한 기준을 바로 제시' },
  en: { bt: 'An error occurred', bw: 'no cause, no fix', gt: 'Password needs at least 8 characters', gw: 'states the exact rule to fix it' },
};
let lang = 'ko';
function paint() {
  const t = L[lang];
  bt.textContent = t.bt; bw.textContent = t.bw; gt.textContent = t.gt; gw.textContent = t.gw;
}
paint();
setInterval(() => { lang = lang === 'ko' ? 'en' : 'ko'; paint(); }, 2400);

좋은 에러 메시지는 세 가지를 답합니다 — 무엇이 문제인지, 왜 문제인지, 어떻게 고치는지. 이 중 하나라도 빠지면 사용자는 같은 실수를 반복하거나 이탈합니다.

한국어 에러 메시지는 특히 존댓말 톤을 지켜야 합니다. "형식이 잘못되었습니다"처럼 사용자를 탓하는 말투 대신 "형식이 달라요, ~처럼 입력해주세요"처럼 원인과 해결을 함께 건넵니다. 내부 에러 코드(500, NullPointerException)를 그대로 노출하는 것도 피해야 할 습관입니다.

데모의 ✕는 "오류 발생"만 말하고 끝나지만, ✓는 정확한 기준(8자 이상)을 제시해 바로 고칠 수 있게 합니다.

언제 쓰나

폼 검증, API 실패, 결제 실패 메시지를 쓸 때. "정말요?" 대신 "왜, 어떻게"를 먼저 채우세요.