@@ -709,8 +709,9 @@ you don't know ahead of time every error that could happen
709
709
while the code is running,
710
710
especially when propagating errors thrown somewhere else.
711
711
This approach also reflects the fact that errors can change over time.
712
- New versions of a library can throw new errors ---
713
- including libraries used by your dependencies ---
712
+ New versions of a library ---
713
+ including libraries that your dependencies use ---
714
+ can throw new errors,
714
715
and the rich complexity of real-world user configurations
715
716
can expose failure modes that weren't visible during development or testing.
716
717
The error handling code in the examples above
@@ -719,26 +720,26 @@ that don't have their own specific `catch` clause.
719
720
720
721
Most Swift code doesn't specify the type for the errors it throws.
721
722
However,
722
- in some special cases,
723
- you might limit code to throwing errors of only one specific type :
723
+ you might limit code to throwing errors of only one specific type
724
+ in the following special cases :
724
725
725
726
- When running code on an embedded system
726
727
that doesn't support dynamic allocation of memory.
727
- Throwing an instance ` any Error ` or another boxed protocol type
728
+ Throwing an instance of ` any Error ` or another boxed protocol type
728
729
requires allocating memory at runtime to store the error.
729
730
Throwing an error of a specific type
730
731
lets Swift allocate that memory upfront instead.
731
732
732
733
- When the errors are used only within some unit of code,
733
734
like a library,
734
735
and aren't part of the interface to that code.
735
- Because the errors come only from the library,
736
+ Because the errors come from only the library,
736
737
and not from other dependencies or the library's clients,
737
738
you can make an exhaustive list of all possible failures.
738
739
And because these errors are an implementation detail of the library,
739
- and they're always handled within that library.
740
+ they're always handled within that library.
740
741
741
- - In code that only throws errors that were thrown elsewhere,
742
+ - In code that throws only errors that were thrown elsewhere,
742
743
like a function that takes a closure argument
743
744
and propagates any errors from that closure.
744
745
For a comparison between ` rethrows `
@@ -756,9 +757,9 @@ enum StatisticsError: Error {
756
757
}
757
758
```
758
759
759
- To specify that a function throws only ` StatisticsError ` values as its errors
760
- you write ` throws(StatisticsError) ` when declaring the function,
761
- instead of just writing ` throws ` .
760
+ To specify that a function throws only ` StatisticsError ` values as its errors,
761
+ you write ` throws(StatisticsError) ` instead of only ` throws `
762
+ when declaring the function .
762
763
This syntax is also called * typed throws*
763
764
because you write the error type after ` throws ` --- for example:
764
765
@@ -783,7 +784,7 @@ This function throws an instance of `StatisticsError` if the input isn't valid.
783
784
Both places in the code above that throw an error
784
785
omit the type of the error
785
786
because the function's error type is already defined.
786
- You can use the short form like ` throw .noRatings `
787
+ You can use the short form, ` throw .noRatings ` ,
787
788
instead of writing ` throw StatisticsError.noRatings `
788
789
when throwing an error in a function like this.
789
790
@@ -847,7 +848,7 @@ the `do`-`catch` statement throws `StatisticsError` values as its errors.
847
848
Like other ` do ` -` catch ` statements,
848
849
the ` catch ` clause can either handle every possible error,
849
850
or it can propagate unhandled errors for some surrounding scope to handle.
850
- Here, it handles all of the errors,
851
+ This code handles all of the errors,
851
852
using a switch with one case for each enumeration value.
852
853
Like other ` catch ` clauses that don't have a pattern,
853
854
the clause matches any error
@@ -867,7 +868,7 @@ For a library that catches all of its own errors,
867
868
you could use this approach to ensure any new errors
868
869
get corresponding new code to handle them.
869
870
870
- If a function or ` do ` block throws only errors of a single type,
871
+ If a function or ` do ` block throws errors of only a single type,
871
872
Swift infers that this code is using typed throws.
872
873
Using this shorter syntax,
873
874
you could write the ` do ` -` catch ` example above as follows:
0 commit comments