int.parse와 int.tryParse의 차이

pharmDev·2024년 12월 15일

Flutter에서 int.parseint.tryParse문자열(String)정수(int)로 변환할 때 사용됩니다.
둘의 차이는 에러를 처리하는 방식입니다.


1. int.parse

의미

  • 문자열을 정수로 변환합니다.
  • 변환에 실패하면 예외(Exception)를 발생시킵니다.

사용 이유

  • 변환이 실패할 가능성이 없다고 확신할 때 사용합니다.
    예: 사용자가 반드시 숫자를 입력하도록 제한된 상황.

사용법

int.parse(String source)
  • 매개변수: 변환하려는 문자열(source).
  • 반환값: 정수 값으로 변환된 결과.

예제: int.parse

void main() {
  String numberString = '42';

  // 문자열을 정수로 변환
  int result = int.parse(numberString);
  print(result); // 출력: 42

  // 잘못된 문자열을 변환하려고 하면 예외 발생
  String invalidString = 'abc';
  try {
    int invalidResult = int.parse(invalidString);
  } catch (e) {
    print('변환 실패: $e'); // 출력: 변환 실패: FormatException: Invalid radix-10 number
  }
}

2. int.tryParse

의미

  • 문자열을 정수로 변환합니다.
  • 변환에 실패하면 null을 반환합니다.
  • 예외를 발생시키지 않기 때문에 에러 처리가 간편합니다.

사용 이유

  • 변환 실패 가능성이 높은 경우.
  • 문자열이 비어 있거나 숫자가 아닐 가능성을 대비할 때.

사용법

int.tryParse(String source)
  • 매개변수: 변환하려는 문자열(source).
  • 반환값: 정수 값으로 변환된 결과 또는 null(변환 실패 시).

예제: int.tryParse

void main() {
  String numberString = '42';

  // 문자열을 정수로 변환
  int? result = int.tryParse(numberString);
  print(result); // 출력: 42

  // 잘못된 문자열은 null 반환
  String invalidString = 'abc';
  int? invalidResult = int.tryParse(invalidString);
  print(invalidResult); // 출력: null
}

3. 코드에서의 사용 예시

int.parse 사용 (값이 유효하다고 확신하는 경우)【코드에서 사용된 부분】

void onStartTimeSaved(String? val) {
  if (val == null) {
    return;
  }

  startTime = int.parse(val); // 변환 실패 시 예외 발생
}
  • 이유:
    • onStartTimeSaved 함수는 onStartTimeValidate를 통해 값이 유효한지 이미 검증한 상태에서 호출됩니다.
    • 따라서, 값이 숫자 문자열임을 보장받기 때문에 예외가 발생하지 않는 상황에서 int.parse를 사용합니다.

int.tryParse 사용 (값이 유효한지 확인하는 경우)【코드에서 사용된 부분】

String? onStartTimeValidate(String? val) {
  if (val == null) {
    return '값을 입력 해주세요!';
  }

  if (int.tryParse(val) == null) { // 변환 실패 여부를 체크
    return '숫자를 입력해주세요!';
  }

  final time = int.parse(val); // 변환이 가능하므로 안전하게 사용
  if (time > 24 || time < 0) {
    return '0과 24 사이의 숫자를 입력해주세요';
  }

  return null;
}
  • 이유:
    • int.tryParse를 사용하여 문자열이 숫자로 변환 가능한지 확인합니다.
    • 변환이 실패하면 null을 반환하기 때문에, 에러 메시지를 반환하여 사용자에게 알릴 수 있습니다.

4. 차이점 비교

특징int.parseint.tryParse
주요 특징문자열을 정수로 변환, 실패 시 예외 발생문자열을 정수로 변환, 실패 시 null 반환
에러 처리예외 처리 필요 (try-catch 사용)예외 발생하지 않음
사용 상황입력값이 올바른 숫자 문자열임이 확실할 때입력값이 숫자가 아닐 가능성이 있을 때
반환값변환된 정수변환된 정수 또는 null

5. 요약

  • int.parse는 변환이 실패할 가능성이 없는 경우에 사용합니다.

    • 코드에서: 값 검증 완료 후(onStartTimeValidate) 안전하게 변환할 때 사용.
  • int.tryParse는 변환 실패 가능성을 고려해야 할 때 사용합니다.

    • 코드에서: 값을 검증할 때(onStartTimeValidate) 안전하게 확인하기 위해 사용.

이 두 가지 방식을 적절히 조합하여, 사용자 입력값 검증 및 변환 로직을 안전하게 처리할 수 있습니다. 😊

profile
코딩을 배우는 초보

0개의 댓글