2016-12-01 3 views
-1

새로운 기능 신속한 오류 처리 방법을 모르겠습니다. 나는 경비를 사용하여 이해하고, 던지고,하고, 내 자신의 방법을 시도한다. 같은 사과 네이티브 메소드에서 네이티브 메서드에서 오류 처리 swift

하지만 내가 어떻게 처리 할 수있는 오류 :

self.displayContent?.addAttribute(NSFontAttributeName, value: UIFont.fontMainFeedContentFont(), range: NSRange.init(location: 0, length: self.displayContent!.length)) 

이 충돌 할 수 있기 때문에,의, 난이 충돌합니다 알고있는 범위는 좋지 않은 가정 해 봅시다하지만 난 할 일이 코드를 서라운드 Xcode는 'try'표현식 내에서 함수를 던지기위한 호출이 발생하지 않는다고 알려줍니다. 내가 아는 것은 addAttribute가 throws 오류를 처리하지 않는다는 것입니다.

내 질문은 어떻게이 방법의 충돌을 처리 할 수 ​​있습니까?

감사

+1

너! 크래시는 당신이 던져야 할 예외와 완전히 다른 것입니다. catch 할 수없는 크래시 - 크래시는 개발자가 소개 한 버그를 항상 나타냅니다. 예를 들어 범위가 올바른지 확인하는 것은 사용자의 작업입니다. – luk2302

+0

물론, 첫 번째 나는 최고의 개발자가 아니야. 둘째 나는 데이터에 책임이 없으며, 나는 그들을 믿지 않는다. 나는 이해하고 싶다. Objc에서는 try catch를 사용할 수 있습니다. 신속하게 가능하지 않습니까? – user2206906

+0

http://stackoverflow.com/questions/38737880/uncaught-error-exception-handling-in-swift를 비교할 수 없습니다. –

답변

0

오류를 잡을 수 있도록이 방법은, 포기하지 않습니다. 함수 호출이 실패하지 않는지 확인하는 유일한 방법은 범위가 유효한지 수동으로 확인하는 것입니다.

당신은 예를 들어 문자열에 대한 귀하의 NSRange 경계를 확인 단순히 rangeOfString(:)

(attributedString.string as NSString).rangeOfString("foo") 

또는처럼 뭔가 문자열 자체의 범위를 얻을 수 있습니다.

if (range.location != NSNotFound && range.location + range.length <= attributedString.length) { /* ok */ } 
+0

네, 멋져 보이네요. Beeb – user2206906

+0

대단히 환영합니다. 귀하의 질문에 답이 나온 경우, 답변을 승인 된 것으로 표시하는 것을 잊지 마십시오! 건배 – beeb