スウィフトしようとしてみてください!試してみてください!使用しての違い

歴史における迅速な例外処理

  • NSErrorのSwift1.0ココアタッチのバージョンは、スウィフトは本当に独自の例外処理メカニズムを持っていません
  • Swift2.0バージョンはERRORTYPEプロトコルを追加しました
  • Swift3.0バージョンと改名エラープロトコル

Swift3.0エラープロトコルの使用

まず、列挙された、統合プロトコルエラーの定義は(スウィフト2.0プロトコルは、3.0名前を変更したプロトコルエラー、ERRORTYPEと呼ばれています)

      
      
1
2
3
4
5
      
      
列挙型 MyError:エラー{
ケース 1
ケース 2
ケース 3
}

スロー使用して投げます

:スローされた例外を示す方法で使用されるパラメータリスト、標準フォーマットバックスローするfunc 方法名字 (参数列表) throws -> 返回值类型方法でスロースローを使用して

      
      
1
2
3
4
5
6
7
8
9
10
11
12
      
      
FUNC testFunc(STR:String)をスロー - >文字列{
もし strの== "1" {
MyError.oneを投げます
} そうなら STR == "2" {
スローMyError.two
} そうなら STR == "三" {
MyError.threeを投げます
}
リターン 「OK」
}

DO-キャッチハンドルの例外を使用します

      
      
1
2
3
4
5
6
7
8
9
      
      
やります {
VAR STR = testFunc(STR:試みる"3"を
}キャッチMyError.one {
印刷("MyError.one"
}キャッチMyError.two {
印刷("MyError.two"
} catch let error as MyError {
print(error)
}

try?的使用

Swift2.0 后加入了新的关键字 try? , 如果不想处理异常那么可以用这个关键字,使用这个关键字返回一个可选值类型,如果有异常出现,返回nil.如果没有异常,则返回可选值.例子如下

      
      
1
2
3
4
5
6< 大专栏   Swift try try! try?使用和区别/div>
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
      
      
enum MyError : Error {
case one
case two
case three
}
func testFunc(str: String) throws -> String {
if str == "one" {
throw MyError.one
} else if str == "two" {
throw MyError.two
} else if str == "three" {
throw MyError.three
}
return "ok"
}
var str = try? testFunc(str: "three")
print(str)

控制台输出

`nil
Program ended with exit code: 0`

try!的使用

如果不想处理异常,而且不想让异常继续传播下去,可以使用try!.这有点儿类似NSAssert().但是一旦使用try!后,在可能抛出异常的方法中抛出了异常,那么程序会立刻停止.例子如下

      
      
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
      
      
enum MyError : Error {
case one
case two
case three
}
func testFunc(str: String) throws -> String {
if str == "one" {
throw MyError.one
} else if str == "two" {
throw MyError.two
} else if str == "three" {
throw MyError.three
}
return "ok"
}
var str = try! testFunc(str: "three")

控制台:程序奔溃掉~


try try? try! 的区别

  • try 出现异常处理异常
  • ?しようと、異常はnilを返す例外、オプションの戻り値の型を処理できません
  • 試してみてください!プログラムが異常、同様のNSAssertを停止するよう表示されたら、異常は、普及していき防ぎます()

おすすめ

転載: www.cnblogs.com/dajunjun/p/11698682.html