2016-12-11 11 views
-1

私は.NETのバックグラウンドから来ています。エラー処理は、try-catchで一連のステートメントを折り返すのと同じくらい簡単です。たとえば:try/catchで速やかにエラーを処理する

try 
{ 
    statement1 
    statement2 
} 
catch (ex) 
{ 
    log(ex.Message) 
} 

私はスウィフトのプロジェクトでエラー処理を追加しようとしている、と私は、これまでに読んだすべての記事は、そのエラー処理がスウィフトでより多くの作業が必要示しているように見えます。上記の例では、どのステートメントがエラーをスローするかを正確に把握し、その前に "try"を追加する必要があるようです。 try-catchでコードのブロックを単純に折り返し、スローされるエラーを調べることはできませんか?

+0

を次のようにキャッチしたい例外の列挙型を作成し、あなたが構造のこの小さな変化に.NETで行うと同じように迅速にトライキャッチを使用することができますはい、それはあります正しい。 –

+0

https://developer.apple.com/library/prerelease/content/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html#//apple_ref/doc/uid/TP40014097-CH42-ID508 – Rob

+0

うわー、それはたくさんのようです仕事の。私のアプリはクラッシュしている。私がやりたかったことは疑わしいコードの周りにシンプルなtry/catchを追加してロギングをすることだが、それをする前に多くの例外的な設計作業をする必要があるようだ。 – Prabhu

答えて

1

いいえ、try-catchでコードブロックをラップすることはできません。

まず、すべてのコード行が例外を生成するわけではありません。 「スロー」とマークされた機能だけが例外を生成する可能性があります。例えば

、あなたには、いくつかの機能があります、だから、

.... 
do { 
    let deserialisedObject = try deserialise(jsonObject) 
    ... // do whatever you want with deserialised object here 
} catch let error as MyErrorType { 
    ... // do whatever you want with error here 
} 
... 

deserialise(json: JSON) -> MyObjectType throws 

をそしてこの機能は、あなたがそれを使用する方法だタイプMyErrorType

の例外をスローしてみましょうご覧のように、迅速な例外は、.NETのC++(またはその他の通常の言語)の例外と同じではありません。

+0

Swiftは実際に " 「例外」ではありません。 –

-1

あなたはその前 はあなたが

//exceptions to catch, change as per your need 
enum someActionError: Error { 
    case invalidSelection 
    case outOfStock 
} 

//use 
do { 
    try statement1 
} catch someActionError.invalidSelection { 
    print("Invalid Selection.") 
} catch someActionError.outOfStock { 
    print("Out of Stock.") 
} 
関連する問題