예외 상황
이름이 한 글자, 수량 0 같은 입력이에요. 사고는 늘 평범하지 않은 입력에서 나요
쉽게 말하면
붐비는 시간의 계산대를 떠올려 보세요. 앞 손님 백 명은 아무 일 없이 지나가요. 줄이 멈추는 건 백한 번째 손님이에요. 1,500원짜리를 5만 원권 한 장으로 내거나, 쿠폰 세 장을 한꺼번에 내밀거나, 이름이 한 글자라 예약 장부 칸에 안 맞는 손님이에요. 이 손님들이 진상이 아니라는 게 핵심이에요. 그냥 드문 손님이에요. 가게가 준비하는 건 이 사람을 막는 게 아니라, 와도 줄이 안 멈추게 잔돈과 규칙을 미리 두는 거예요. 만든 것 안에서도 똑같아요. 드문 값이 들어왔을 때 화면이 멈추지 않게 하는 것, 이게 예외 상황을 챙긴다는 뜻이에요.
이 문서는 손으로 확인할 목록 다음 자리에 있어요. 무엇을 누를지 정하는 게 앞 문서의 일이고, 그 자리에 무슨 값을 넣어 볼지 정하는 게 여기예요.
전부 통과해요. 손님은 이름이 두 글자가 아니고, 수량을 0으로 두고 누르기도 해요. 사고는 그때 처음 나요.
같은 길을 밟는 데 3분이 더 들어요. 대신 손님이 만나기 전에 내가 먼저 만나요. 발견 시점이 다르면 비용도 달라져요.
사고가 몰리는 자리
값은 무한히 많지만 사고가 나는 자리는 정해져 있어요. 끝과 경계예요. 아무것도 없을 때, 딱 하나일 때, 너무 많을 때, 그리고 딱 그 선을 넘는 순간이에요.
| 넣어 볼 값 | 실제로 벌어지는 일 | 손님에게 보이는 모습 |
|---|---|---|
| 0개 또는 아무것도 없음 | 목록이 비었을 때를 안 그려 놓으면 화면이 백지로 남아요 | "사이트가 고장 났나 봐요"라고 생각하고 나가요 |
| 한 글자 이름, 아주 긴 이름 | 칸 폭을 두 글자 기준으로 잡았으면 글자가 잘리거나 버튼이 밀려요 | 자기 이름이 이상하게 나와서 주문을 멈춰요 |
| 수량 0, 음수, 소수점 | 빼기 계산이 그대로 돌아서 결제 금액이 0원이나 마이너스가 돼요 | 값을 안 내고 주문이 들어오거나 결제가 튕겨요 |
| 재고보다 많은 수량 | 재고를 확인하는 자리가 없으면 없는 물건이 팔려요 | 결제까지 되고 나서 품절 전화를 받아요 |
| 따옴표·이모지 같은 특수한 글자 | 저장이 실패하거나 화면이 깨진 채로 표시돼요 | 저장했는데 남지 않거나 글자가 뭉개져 보여요 |
| 같은 버튼을 빠르게 두 번 | 요청이 두 번 나가서 주문이나 결제가 둘로 늘어나요 | 중복 결제 문의로 돌아와요. 가장 비싼 종류예요 |
"손님이 그렇게 안 해요"가 가장 위험한 문장이에요
손님은 폰을 한 손으로 잡고, 지하철에서 신호가 끊긴 채로, 아이를 안고 주문해요. 두 번 누르고 뒤로 갔다가 다시 들어와요. 사장님이 책상 앞에서 하는 조작이 손님의 조작과 같다고 보면 안 돼요. 드문 것은 손님 한 명 기준이고, 손님 천 명 기준이면 매일 있는 일이에요.
그 자리에서 넣어 보는 순서
외울 필요 없어요. 칸 하나를 볼 때마다 여섯 가지를 순서대로 넣어 보면 돼요. 코드를 읽는 걸음은 하나도 없어요.
- 1비워 놓고 눌러요. 아무것도 안 넣고 제출부터 해 봐요. 안내 문구가 뜨면 정상이고, 그냥 넘어가거나 빨간 화면이 뜨면 여기가 첫 구멍이에요.
- 2가장 작은 값을 넣어요. 한 글자, 1개, 오늘 날짜예요. 최솟값은 사람이 가장 자주 빼먹는 자리예요.
- 30과 그 아래를 넣어요. 수량 0, 금액 0, 마이너스요. 여기서 금액이 0원으로 계산되면 그날로 매출이 새는 길이 열려요.
- 4가장 큰 값을 넣어요. 재고보다 많은 수량, 아주 긴 문장, 아주 큰 금액이에요. 어디서 멈추는지 눈으로 확인해 둬요.
- 5남의 나라 손님처럼 넣어요. 이름에 공백과 따옴표, 전화번호에 하이픈 없이, 주소에 아주 긴 건물명을 넣어요.
- 6두 번 빠르게 눌러요. 저장과 결제 버튼에서 특히요. 결과가 두 줄로 생기면 한 묶음으로 처리하기가 필요한 자리예요.
확인해 보세요
예약 폼을 만들었어요. 여섯 걸음 중 가장 먼저 해 볼 것은?
내 가게 값으로 바꿔 넣기
위 여섯 걸음은 어느 가게에나 맞는 틀이에요. 실제로 값이 나가는 건 내 장사에서만 나오는 끝값이에요. 왼쪽에서 내 업종을 찾아 오른쪽을 그대로 넣어 보세요.
| 내 장사 | 꼭 넣어 봐야 하는 끝값 | 안 보면 생기는 일 |
|---|---|---|
| 예약을 받는 가게 | 영업 종료 1분 전 시간, 휴무일, 같은 시간에 두 명 예약 | 문 닫은 시간에 예약이 잡혀요. 손님은 왔는데 가게가 어두워요 |
| 물건을 파는 가게 | 마지막 한 개, 재고 0, 옵션을 안 고른 채 담기 | 없는 물건이 팔려요. 취소하고 사과하는 시간이 그대로 비용이에요 |
| 배달을 하는 가게 | 배달 구역 바깥 주소, 최소 주문 금액 딱 맞는 금액 | 못 가는 곳 주문을 받아요. 취소도 내 책임으로 남아요 |
| 쿠폰이나 할인을 쓰는 가게 | 쿠폰 두 장 동시 사용, 할인이 상품값보다 큰 경우 | 결제 금액이 0원이나 마이너스가 돼요. 정산에서 뒤늦게 발견돼요 |
| 문의만 받는 한 장짜리 사이트 | 빈칸 제출, 아주 긴 문의 글, 같은 사람이 열 번 연속 제출 | 빈 문의가 쌓이거나 광고 글이 밀려 들어와 진짜 문의를 못 찾아요 |
직접 해보기
내 가게의 끝값 다섯 줄을 적어 보세요
표에서 내 줄을 골라 사장님 말로 다시 적는 데 3분이면 돼요. "휴무일에 예약 눌러 보기"처럼 넣을 값이 보이게 적는 게 요령이에요. 스튜디오에서 만들고 있는 것이 있으면 만들 때 그대로 요청에 붙여도 돼요. "수량이 0이거나 재고보다 클 때 안내를 띄우고 주문은 막아 주세요"처럼요.
스튜디오 열고 적어 보기헷갈리기 쉬운 것
여기서 시간을 가장 많이 잡아먹는 건 어려운 값이 아니라 비슷하게 보이는 네 가지를 섞는 것이에요. 가르는 질문 하나씩만 외우면 돼요.
| 섞이기 쉬운 두 가지 | 무엇이 다른가 | 어느 쪽인지 가르는 질문 |
|---|---|---|
| 예외 상황과 잘못 쓴 것 알려주기 | 앞은 어떤 값을 넣어 볼지 정하는 일이고, 뒤는 그 값을 만났을 때 화면이 뭐라고 말할지 만드는 일이에요 | "넣어 볼 값을 고르는 중인가요, 안내 문구를 쓰는 중인가요" |
| 예외 상황과 고쳤더니 딴 게 깨짐 | 앞은 처음부터 안 챙긴 값이고, 뒤는 되던 것이 수정 때문에 멈춘 거예요 | "지난달에는 이 값이 됐었나요" |
| 예외 상황과 드물게 나는 오류 | 앞은 같은 값을 넣으면 반드시 재현돼요. 뒤는 조건이 안 잡힌 상태예요 | "같은 값으로 다시 하면 또 나나요" |
| 막아야 할 값과 받아 줘야 할 값 | 재고보다 큰 수량은 막는 게 맞고, 한 글자 이름은 받아 줘야 맞아요 | "이건 손님 잘못인가요, 내 칸이 좁은 건가요" |
마지막 줄이 가장 자주 틀려요. 드문 값을 전부 막아 버리면 진짜 손님을 쫓아내게 돼요. 이름이 한 글자인 사람도, 성이 두 글자인 사람도 실제로 있어요. 막는 것과 받아 주는 것을 먼저 갈라야 어떤 값을 어떻게 다룰지 정해져요.
실제로 겪는 장면
장면 1 · 외주 개발자가 작업을 마치고 말했다
“정상 흐름은 다 확인했어요.”
여기서 물을 건 하나예요. "수량 0과 재고보다 큰 수를 넣었을 때는 어떻게 되나요." 정상 흐름을 확인했다는 말과 비정상 값을 넣어 봤다는 말은 다른 말이에요. 이 질문 하나가 남은 점검 범위를 정해요. 답이 막힌다면 그건 아직 안 해 본 작업이지 이미 끝난 작업이 아니에요.
장면 2 · 오픈 다음 날 손님이 전화했다
“주문은 됐다는데 결제 금액이 0원으로 찍혀 있어요.”
쿠폰이나 할인이 상품값보다 컸을 때 흔히 나는 모습이에요. 순서가 있어요. 같은 값을 내가 그대로 넣어서 재현되는지 먼저 보고, 재현되면 그 계산이 도는 자리를 막아요. 손님에게는 "확인해서 오늘 안에 연락드린다"까지만 말해요. 원인을 모르는 상태에서 금액을 다시 청구하겠다고 약속하지 않아요. 재현된 값은 재현 절차 쓰기에 그대로 적어 두면 다음에 같은 일이 안 나요.
손님 이름으로 시험하지 마세요
끝값을 넣어 보는 건 진짜 손님 기록에 하는 일이 아니에요. 실제 예약이 잡히거나 재고가 줄어들면 그 자체가 사고예요. 예시 데이터 넣기로 가짜 손님을 몇 명 만들어 두고 거기에 넣어 보세요. 결제가 붙어 있으면 결제사가 주는 시험 모드를 켜고 하는 게 순서예요.
지금 규모에서 어디까지 하면 되나
여기가 이 문서에서 가장 정직해야 하는 자리예요. 끝값을 전부 챙기는 데는 시간이 들고, 가게 규모에 안 맞으면 그건 그냥 낭비예요.
| 내 가게 상황 | 어디까지 하면 되나 | 왜 |
|---|---|---|
| 아직 만드는 중이고 손님이 없어요 | 빈칸 제출 하나만 봐요 | 깨져도 잃을 손님이 없어요. 지금은 빨리 만드는 게 이득이에요 |
| 문의나 예약만 받아요 | 빈칸, 한 글자 이름, 휴무일 세 가지를 봐요 | 안 들어온 문의는 되돌릴 수 없어요. 다만 돈은 아직 안 걸려 있어요 |
| 결제가 붙었어요 | 0원과 마이너스, 두 번 누르기를 매번 봐요 | 여기서부터 실수는 돈으로 새요. 손님과 다투는 자리이기도 해요 |
| 재고가 있는 물건을 팔아요 | 마지막 한 개와 재고 0을 고정으로 넣어 봐요 | 없는 물건이 팔리면 취소·사과·환불이 한 번에 와요 |
| 손님이 매일 수백 명이에요 | 드문 값이 매일 오는 값이 돼요. 기계가 대신 점검하게 만들 때예요 | 천 번에 한 번이 하루에 한 번이 돼요. 손으로는 못 버텨요 |
겁을 필요한 만큼만 사세요
끝값은 셀 수 없이 많아서 다 챙기려 들면 아무것도 못 만들어요. 기준은 하나예요. 이 값이 들어오면 돈이나 손님을 잃는가. 잃는 게 없으면 넘어가고, 돈이 걸린 자리부터 채워요. 결제와 재고, 이 둘이 시작점이에요.
자주 묻는 것
- Q. AI에게 만들어 달라고 하면 이런 건 알아서 챙겨 주지 않나요?
- 챙길 때도 있고 안 챙길 때도 있어요. 말하지 않으면 대개 평범한 경우만 만들어져요. 그래서 만들 때 한 줄을 같이 주는 게 좋아요. "수량이 0이거나 재고보다 크면 주문을 막고 안내를 띄워 주세요"처럼 어떤 값에서 어떻게 하라까지 적어 주면 그대로 반영돼요.
- Q. 끝값을 다 막으면 되지 않나요?
- 막는 것과 받아 주는 것을 갈라야 해요. 재고보다 큰 수량은 막는 게 맞지만, 한 글자 이름이나 아주 긴 주소는 실제 손님이라 받아 줘야 해요. 다 막으면 진짜 손님이 주문을 못 하고 나가요.
- Q. 날짜와 시간에서 자꾸 이상한 게 나와요.
- 날짜는 끝값이 유난히 많은 자리예요. 자정 직전, 월말, 휴무일, 그리고 해외 손님의 시간대예요. 예약이나 정산처럼 시각이 중요한 기능이면 시간대와 날짜 처리를 같이 보세요.
- Q. 손님이 이상한 값을 넣어서 생긴 문제도 제 책임인가요?
- 화면이 멈추거나 잘못 계산되면 손님에게는 내 잘못으로 보여요. 그래서 값을 탓하지 않고 화면이 뭐라고 말할지를 정해 두는 쪽으로 다뤄요. 안내 문구가 뜨고 다음에 뭘 하면 되는지 보이면, 같은 상황도 사고가 아니라 안내가 돼요.
- Q. 몇 개나 넣어 봐야 충분한가요?
- 칸마다 여섯 걸음이면 충분해요. 그 위에 내 장사에서만 나오는 끝값 다섯 줄을 더해요. 이 열한 가지가 손으로 지켜지는 크기예요. 목록이 이보다 길어지면 실제로는 아무도 안 하게 돼요.
- Q. 품절인데 주문이 들어왔어요. 지금 뭘 먼저 하나요?
- 재고를 확인하는 자리를 먼저 막고, 그다음에 손님에게 연락해요. 열어 둔 채로 사과부터 하면 그 사이에 같은 주문이 또 들어와요. 손님 응대 문구는 품절 대응에 정리돼 있어요.
하나 더
쿠폰 5,000원짜리를 3,000원 상품에 쓰면 결제 금액이 마이너스 2,000원으로 계산돼요. 지금 할 일은?
더 깊이 (안 읽어도 괜찮아요)
왜 하필 끝에서 나나 · 만들 때 사람은 머릿속에 평범한 손님 한 명을 그려 놓고 화면을 짜요. 그 손님은 두 글자 이름에 수량 1개예요. 그 그림 밖에 있는 값은 애초에 생각의 대상이 아니었던 거라 처리하는 자리도 안 만들어져요. 그래서 사고가 어려운 자리가 아니라 생각의 경계에서 나요. 끝값을 넣어 보는 일은 실력을 시험하는 게 아니라 내가 그린 그림의 테두리를 확인하는 일이에요.
비유가 어디까지 맞고 어디부터 다른가 · 계산대 비유는 "드문 손님에서 줄이 멈춘다"까지는 정확해요. 다른 점이 하나 있어요. 가게에서는 사장님이 그 자리에 서 있어서 드문 손님을 눈으로 보고 그 자리에서 판단해요. 만든 것 안에서는 그 손님이 새벽 두 시에 혼자 와서 조용히 막히고 그냥 나가요. 사장님은 그 손님이 왔다는 사실도 몰라요. 그래서 사람의 순발력으로 못 메우고 미리 넣어 보는 것밖에 방법이 없어요.
이 값 하나가 왜 돈이 되나 · 끝값 사고는 조용히 반복돼요. 결제 금액이 0원으로 계산되는 길이 하나 열려 있으면 아는 사람만 계속 쓰고, 사장님은 정산할 때 숫자가 안 맞아서 알게 돼요. 화면이 빨간 글씨로 멈추는 사고보다 아무 일 없어 보이면서 값이 새는 사고가 훨씬 비싸요. 그래서 넣어 볼 값의 우선순위는 화면이 깨지는 쪽이 아니라 돈이 오가는 쪽이에요.
같은 값이 두 번 문제가 됐다면 · 그 값은 이미 내 장사에서 자주 나오는 값이라는 뜻이에요. 드문 값이 아니라 내가 안 챙긴 평범한 값이었던 거예요. 이때는 점검 목록에 넣는 것으로 끝내지 말고, 그 값이 아예 들어올 수 없게 칸 자체를 바꾸는 걸 봐요. 수량 칸에 직접 입력 대신 더하기 빼기 버튼만 두면 음수와 소수점이 처음부터 안 생겨요.
이것만 기억하세요
- ·사고는 어려운 자리가 아니라 끝과 경계에서 나요. 0개, 한 글자, 재고보다 큰 수예요
- ·칸마다 여섯 걸음을 넣어 봐요. 빈칸, 가장 작게, 0과 그 아래, 가장 크게, 특수한 글자, 두 번 누르기예요
- ·막을 값과 받아 줄 값을 먼저 갈라요. 다 막으면 진짜 손님이 나가요
- ·끝값 점검은 진짜 손님 기록이 아니라 가짜 자료에서 해요
- ·돈이 걸린 자리부터 채워요. 0원·마이너스·두 번 누르기가 가장 비싸요