Application Servers & Java

java.lang.NumberFormatException: For input string: ""

midworker 2025. 5. 23. 18:29
반응형

예외 요약

java.lang.NumberFormatException: For input string: ""

문제 요약

항목 내용
예외 유형 NumberFormatException
예외 메시지 빈 문자열 ("")을 숫자로 변환하려고 시도
주 원인 null 또는 공백 입력값을 Integer.parseInt() 등으로 처리함

오류 발생 조건

String value = "";
int number = Integer.parseInt(value);  // 예외 발생

실무자가 자주 놓치는 포인트

  • Integer.parseInt(""), Double.parseDouble("") 등은 빈 문자열을 숫자로 변환하려 할 때 오류 발생
  • HTML <input>에서 비어있는 값은 ""으로 넘어오며, 유효성 검사 누락 시 예외로 이어짐
  • request.getParameter("amount")와 같은 값도 공백일 수 있으니 유의해야 함

해결 방법

1. 입력값 검사

if (value != null && !value.trim().isEmpty()) {
    int number = Integer.parseInt(value);
} else {
    // 기본값 지정 또는 예외 처리
    int number = 0;
}

2. 유틸리티 메서드 사용 예시

public static int safeParseInt(String str, int defaultValue) {
    try {
        return Integer.parseInt(str);
    } catch (NumberFormatException e) {
        return defaultValue;
    }
}

3. JSTL 또는 Thymeleaf 사용 시

  • 서버에서 null 또는 ""인 파라미터에 대해 기본값을 먼저 처리하거나,
  • HTML form에서 <input type="number" value="0" /> 기본값 설정 필요

결론 및 실무 팁

NumberFormatException: ""은 실무에서 사용자 입력이 빈 값으로 넘어올 때 매우 자주 발생하는 예외입니다.
항상 숫자 변환 전에 값의 존재 여부를 확인하거나, try-catch로 감싸는 습관이 필요합니다.

“A사는 이 문제로 매번 수동으로 passphrase 입력해야 했고, 운영팀 근무자가 상시 대기했음 → 무비밀번호 키 전환으로 무중단 운영 달성”


SSL 설정과 연관된 팁

  • SSL 인증서 발급은 주로 Let's Encrypt, DigiCert, GlobalSign 등에서 가능하며 CSR 생성 → 인증 요청 → 서명된 인증서 반환 순으로 이뤄집니다.

  • 인증서 체인(CA-bundle)은 루트 인증서 → 중간 인증서 → 서버 인증서 구조로 연결되며, 체인이 완전하지 않으면 신뢰되지 않을 수 있습니다.

  • Apache의 mod_ssl 환경에서 문제 발생 시, 다음과 같이 로그 레벨을 설정해 원인 파악에 도움을 받을 수 있습니다:

    LogLevel ssl:debug

반응형