2017-11-10 8 views
0

내가 다음 줄에 대한 예외를 넣어 시도하고는 : 그 대신 문자열의 정수 경우 그것을 무시하도록EXC_BAD_INSTRUCTION에 예외를 넣을 수 있습니까?

let someData Int = Int(anArray[0])! 

나는 예외를 원한다.

빠른 새로운 임하지만, 파이썬에서 난 그냥 할 수있는 다음

guard let someData Int = Int(anArray[0])! else { 
    print("error") 
} 

,

let someData Int = try! Int(anArray[0])! 

나 ':

try: 
    let someData Int = Int(anArray[0])! 
except: 
    pass 

나는 다음 시도했다 m 스위프트 사용 3

+0

*이 옵션은 설명 바인딩 호출되는'String'에서'Int'을 만드는 *에 대한 예외를 두는를 [ Swift Language Guide : The Basics] (https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html) ;-) – vadian

답변

1

당신 mi 적절한 솔루션 ssed :

if let someData = Int(anArray[0]) { 
    // someData is a valid Int 
} 

을 또는 당신은 guard를 사용할 수 있습니다

guard let someData = Int(anArray[0]) else { 
    return // not valid 
} 

// Use someData here 

!의 사용의 전체 부족. 옵션이 실패 할 수없는 경우를 제외하고는 옵션을 강제로 해제하지 마십시오. 스위프트에서

1

은 시도 - catch 블록은 다음과 같이 :

do { 
    //call a throwable function, such as 
    try JSONSerialization.data(withJSONObject: data) 
} catch { 
    //handle error 
} 

그러나, 당신은 항상 문서의 키워드를 던져 으로 표시됩니다 던질 수 기능에서 오류를 잡을 수 있습니다. try 키워드는 throwable 함수에서만 사용할 수 있고 do-catch 블록은 do 블록에서 try 키워드를 사용할 때만 효과가 있습니다.

포착하려는 강제로 캐스팅/언 래핑 예외 같은 다른 유형의 예외를 catch 할 수 없습니다.

올바른 처리 선택적 바인딩을 사용하는 경우 선택적 값입니다.

guard let someData = Int(anArray[0]) else { 
    print("error") 
    return //bear in mind that the else of a guard statement has to exit the scope 
} 

당신은 범위를 종료하지 않으려면 :

스위프트에서
if let someData = Int(anArray[0]) { 
    //use the integer 
} else { 
    //not an integer, handle the issue gracefully 
}