-
Error Handlingios 2022. 3. 13. 17:43
안녕하세요. 오늘은 에러 처리 방법에 대해서 이야기를 해보려고 합니다.
프로젝트를 진행하며 에러 처리 방법에 대해서도 중요하다는 생각이 들었고 지금 시간에 한번 정리하는게 좋을거 같다는 생각을 하게 되어 글을 작성해봅니다.
에러 처리란?
프로그램 실행시 에러가 발생하면 그 상황에 대해 적절한 처리가 필요
이 과정을 에러 처리라고 부른다.
에러발생 시점
- 컴파일 에러
- 런타임 에러
에러처리가 필요한 이유
특정 명령 실행을 완전히 실행되는 것이 완전히 보장되지 않을 경우가 있다.
이러한 경우 옵셔널을 사용하여 요청한 값이 없다는 값을 표시할 수는 있지만 어떠한 종류의 오류인지 확인할 수 없다.
이로써 현재 어떠한 오류가 발생했는지 , 그에대한 처리를 어떻게 할 것인지에 대해 처리를 하기 위해서 필요하다고 생각한다.
에러 처리
표시
- Error protocol 채택한 enum 생성
- Swift의 열거형은 특별히 이런 관련된 에러를 그룹화하고 추가적인 정보를 제공하기에 적합
Custom Error 발생
- throw Error
에러 발행 - 에러 발생시 해당 메서드를 호출한 쪽으로 반환되는 값을 전달
- throws function을 호출하는 부분에서 do - catch문 작성을 요구
감지(처리)
- 해당 함수를 호출한 코드에서 에러를 처리하는 방법
- do-catch 구문
- 옵셔널 값을 반환하는 방법
- assert를 사용하여 강제로 크래쉬를 발생시키는 방법
감지(처리) : 해당 함수를 호출한 코드에서 에러를 처리하는 방법
- 함수 , 메소드 혹은 초기자가 에러를 발생할 수 있다는 것을 알리기 위해 throw 키워드 사용
- 함수 내부에서 애러를 만든 후 함수가 호출된 곳에 전달
- 오직 throwing function만이 에러를 발생
- 만약 throwing function이 아닌 함수에서 throw가 발생한다면 해당 함수 내에서 에러 처리를 해주도록 해야한다.
throws 키워드 사용 감지(처리) : do-catch 구문
- 에러를 처리하는 코드 블럭을 작성
- do 구문 안에서 에러가 발생한다면 에러의 종류를 catch 구문으로 구분
- catch 구문 뒤 에러 명시하여 에러 구분 가능
- catch 구문 뒤 별도로 명시하지 않으면 지역 상수인 error로 바인딩
감지(처리) : 옵셔널 값을 반환하는 방법
- try? 구문을 사용해 에러를 옵셔널 값으로 변환 가능
- 만약 에러가 try? 표현 내에 발생한다면 , 그 표현은 nil로 표현
감지(처리) : assert를 사용하여 강제로 크래쉬를 발생시키는 방법
- 에러가 발생되지 않을 것이라고 확신하는 경우 try! 혹은 runtime assertion 사용
- 에러가 발생하지 않도록 할 수는 있도록 할 수 있음
- 만약 에러가 발생하면 런타임 에러가 발생
에러 처리 테스트 코드
1. 에러 그룹화
2. throws function 생성
3. throws function을 호출하는 곳에서 do-catch , try 구문 사용
(try 키워드 사용 이유 : 이 함수가 에러를 발생시킬 수 있기 때문에 에러가 발생하면 catch 구문에 전달을 위해서 사용)
4. catch 구문에 사용자가 그룹화한 에러 , 지역 상수인 error를 추가하여 바인딩 처리
읽어주셔서 감사합니다.
부족한 부분이 있다면 댓글 남겨주세요.
감사합니다.
'ios' 카테고리의 다른 글
MVP 패턴에 대하여 (0) 2022.02.21 custom font 적용 (0) 2021.10.25 로컬 푸시 알림 기능 구현 (Local Notification) (0) 2020.12.17 ARC: Resolving Strong Reference Cycles Between Class Instances (0) 2020.09.07 ARC (0) 2020.09.06