2017-04-07 13 views
-1

Apple의 문서에서 오류를 발생시키는 몇 가지 방법이 있습니다. 그러나 나는 그것이 던진 것에 대한 어떤 정보도 찾을 수 없다.Swift에서 func이 던지는 오류의 종류는 무엇입니까?

아래와 같은 방법입니다. FileManager 클래스에 있습니다.

func moveItem(at srcURL: URL, to dstURL: URL) throws 

어떤 종류의 오류가 발생하는지 알고 싶습니다. 어디에서 관련 정보를 얻을 수 있습니까?

+1

을 생각하지 않는다? –

+0

나는 시험해 보았다. 그러나 나는 대답을 얻지 못했습니다. 어쩌면 핵심어를 알아 내지 못했을 수도 있습니다. – Matt

답변

0

throws 선언에 유형이 필요한 Java와 달리 Swift에서는 알 수없는 어떤 유형의 Error이 던져 질 것입니다. 당신이 알고있는 유일한 것은 객체가 Error- 프로토콜을 따르고 있다는 것입니다.

기능이 잘 문서화 되었기 때문에 Error이라는 특수 문자가 포함 된 경우 캐치 된 객체를 올바르게 캐스팅해야합니다.

예 : 당신은 구글에 대한 질문입니다

do { 
    try moveItem(from: someUrl, to: otherUrl) 
} catch { 
    //there will automatically be a local variable called "error" in this block 
    // let's assume, the function throws a MoveItemError (such information should be in the documentation) 
    if error is MoveItemError { 
     let moveError = error as! MoveItemError //since you've already checked that error is an MoveItemError, you can force-cast 
    } else { 
     //some other error. Without casting it, you can only use the properties and functions declared in the "Error"-protocol 
    } 
} 
+0

예,이 정보는 나에게 유용합니다. 어떤 프로토콜을 따르는 지 알 수있는 방법이 있습니까? 실패했을 때 무슨 일이 있었는지 알고 싶습니다. – Matt

+0

그 뜻은'catch '블록에서 ** 정보를 얻고,'catch'블록에서 ** do ** 무언가를하지 말아야한다는 것입니까? – Matt

+0

'catch'-block에는'error'라는 로컬 변수가 있습니다. 이 프로토콜은 '오류'프로토콜을 따릅니다. 메소드에 대한 문서에서 특정 객체 ('CustomError'라고 가정 해 봅시다)가 발생했다면,'as'로 그 객체에'error'를 던지거나'error'가 있다면'type'을 검사해야합니다 '오류가 CustomError {// CustomError를 처리하면}' – FelixSFD