3월 12일 TIL (예외처리)

이승원·2024년 3월 12일
0

TIL

목록 보기
37/75
post-thumbnail

예외처리

  • 예외처리를 통해 개발자가 예상하지 못한 에러들을 예외처리하기 위함이다.
  • if 문을 통해서도 할 수 있지만, 가독성 + 정확하게 처리를 하기 위함이라고 생각하면 된다.

Throws , do-Catch

  • Throwsdo-catch 는 항상 한쌍으로 존재한다.
    - Throws 는 리턴값을 반환하기 전에 오류가 발생하면 에러 객체를 반환하다는 의미로 사용한다.
    - Throws 는 오류가 발생할 가능성이 있는 메서드 제목 옆에 사용한다.
    - Throw 는 오류가 발생할 구간에서 사용한다.
  • do-catch 는 오류를 handle 하기 위한 용도이다
  • 예시코드:
enum CustomError: Error{
	case outOfBounds
    case invalidInput(String)
}

func processValue(_ value : Int) throws -> Int {
	if value < 0 {
    	throw CustomError.invalidInput("0보다 큰 숫자를 입력하세요")
    }
    if value > 100 {
    	throw CustomError.outOfBounds()
    }
    return value * 2
}

do {
	let result = try processValue(-10)
    print("result : \(result)")
}catch CustomError.outOfBounds{
	print("100보다 작은 숫자만 사용가능")
}catch CustomError.invalidInput(let errorMessage){
	print(errorMessage)
}catch {
	print("An error occured : \(error)")
}

try, try!, try?

종류사용 방법반환 값
trydo-catch와 함꼐 사용리턴값 혹은 에러값
try?let temp = try? someThrowingFunction()옵셔널 리턴값 혹은 nil
try!let temp = try? someThrowingFunction()리턴값 혹은 프로그램 종료
profile
개발자 (진)

0개의 댓글