2017-04-07 11 views
-1

アップルのドキュメントにいくつかのエラーが表示されるのを見ています。しかし、私はそれが何を投げるかについての情報を見つけることはできません。スウィフトではどのようなエラーがスローされますか?

以下のようにします。これはFileManagerクラスにあります。

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

どのような種類のエラーが発生するのか知りたい。関連情報はどこで入手できますか?

+1

は、あなたはそれがGoogleのための質問だと思いませんか? –

+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'ブロックに' error'というローカル変数があります。これは、プロトコル「エラー」に準拠する。 'CustomError'と呼ばれるものと仮定しましょう)がスローされたメソッドのドキュメントが表示されている場合は、' as? 'を使ってそのオブジェクトに 'error'をキャストしなければなりません。 'Error is CustomError {// CustomErrorを処理する}' – FelixSFD

関連する問題