【Swift】【XCode】「throw」「throws」の違いについて

目次

throw throwsの違いについて

前提

ExceptionはApple的には、オーバーヘッドが大きいので、できるだけ使わ無いほうがいいらしい。

throw

プログラムの処理中にエラーが発生した場合にそれを通知するために使用します。
使用するためには、記述されている関数でthrowsが記述されている必要がある。

Errorプロトコルに準拠した列挙型を定義して処理にあわせたエラーを返すことが一般的です。

throws

関数の末尾に記述することで、throwが関数内で使用する事ができる用になる。

記述方法

  1. エラーを作成
  2. 1で作成したエラーをthrowで通知
  3. 関数をdo~try~catch文で呼び出す

1. エラーを作成

1
2
3
4
5
enum TestError: Error {
case test1
case test2(Int) // Int型を引数とする
case test3(String) // String型を引数とする
}

2. 1で作成したエラーをthrowで通知

1
2
3
func test()throws{
throw TestError.test1
}

3. 関数をdo~try~catch文で呼び出す

throwsを記述した関数の実効にはtryが必ず必要になります。更に、例外がスローされたときに処理を記述したい場合、do~try~catchで記述する必要があります。

1
2
3
4
5
do{
try test()
}catch TestError.test1{
print("エラー1")
}
Author

Daiki Iijima

Posted on

2021-07-31

Updated on

2024-04-17

Licensed under