프로그래머가 예외를 throw하는 메서드의 매개 변수를 검사하면 오류가 나타나지 않도록 예외를 사용해야합니다. 예 : NSArrays에서 얻은 0 또는 잘 알려진 "out of bounds"예외로 나눕니다.
NSErrors는 프로그래머가 아무 것도 할 수없는 오류입니다. 예 : plist 파일을 구문 분석합니다. 프로그램이 내용을 읽으려고 시도하기 전에 파일이 유효한 plist인지 확인하는 경우 자원 낭비 일 수 있습니다. 유효성 검사를 위해 프로그램은 전체 파일을 구문 분석해야합니다. 그리고 파일을 구문 분석하여 유효하다고보고하면 다시 파싱 할 수 있으므로 낭비가됩니다. 따라서이 메서드는 파일을 구문 분석 할 수없는 경우 NSError (또는 무언가 잘못되었다는 것을 알려주는 nil)를 반환합니다.
유효성에 대한 구문 분석은 "프로그래머가 매개 변수를 확인 했어야합니다"부분입니다. 이 오류 유형에는 적용 할 수 없으므로 예외를 throw하지 않습니다.
이론적으로 예외 범위 예외는 return nil
으로 바꿀 수 있습니다. 그러나 이것은 매우 나쁜 프로그래밍으로 이어질 것입니다.
Apple는 말한다 :
중요 : 많은 환경에서는 예외의 사용은 매우 평범하다. 예를 들어 파일이 누락되었거나 데이터를 올바르게 파싱 할 수없는 경우와 같이 루틴이 정상적으로 실행될 수 없음을 알리는 예외를 throw 할 수 있습니다. 예외는 Objective-C에서 자원 집약적입니다. 일반 흐름 제어에 예외를 사용하거나 단순히 오류를 나타내지 말아야합니다. 대신 메서드 또는 함수의 반환 값을 사용하여 오류가 발생했음을 나타내야하며 오류 개체의 문제에 대한 정보를 제공해야합니다.