@@ -709,40 +709,42 @@ you don't know ahead of time every error that could happen
709709while the code is running,
710710especially when propagating errors thrown somewhere else.
711711This 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,
714715and the rich complexity of real-world user configurations
715716can expose failure modes that weren't visible during development or testing.
716717The error handling code in the examples above
717718always includes a default case to handle errors
718- that don't have their own specific ` catch ` clause.
719+ that don't have a specific ` catch ` clause.
719720
720721Most Swift code doesn't specify the type for the errors it throws.
721722However,
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 :
724725
725726- When running code on an embedded system
726727 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
728729 requires allocating memory at runtime to store the error.
729- Throwing an error of a specific type
730- lets Swift allocate that memory upfront instead.
730+ In contrast,
731+ throwing an error of a specific type
732+ lets Swift allocate that memory upfront.
731733
732- - When the errors are used only within some unit of code,
734+ - When the errors are an implementation detail of some unit of code,
733735 like a library,
734736 and aren't part of the interface to that code.
735- Because the errors come only from the library,
737+ Because the errors come from only the library,
736738 and not from other dependencies or the library's clients,
737739 you can make an exhaustive list of all possible failures.
738740 And because these errors are an implementation detail of the library,
739- and they're always handled within that library.
741+ they're always handled within that library.
740742
741- - In code that only throws errors that were thrown elsewhere,
743+ - In code that throws only errors that were thrown elsewhere,
742744 like a function that takes a closure argument
743745 and propagates any errors from that closure.
744- For a comparison between ` rethrows `
745- and throwing a specific, generic, error type
746+ For a comparison between propagating a specific error type
747+ and using ` rethrows ` ,
746748 see < doc:Declarations:Rethrowing-Functions-and-Methods > .
747749
748750For example,
@@ -756,9 +758,9 @@ enum StatisticsError: Error {
756758}
757759```
758760
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 ` .
761+ To specify that a function throws only ` StatisticsError ` values as its errors,
762+ you write ` throws(StatisticsError) ` instead of only ` throws `
763+ when declaring the function .
762764This syntax is also called * typed throws*
763765because you write the error type after ` throws ` --- for example:
764766
@@ -783,7 +785,7 @@ This function throws an instance of `StatisticsError` if the input isn't valid.
783785Both places in the code above that throw an error
784786omit the type of the error
785787because the function's error type is already defined.
786- You can use the short form like ` throw .noRatings `
788+ You can use the short form, ` throw .noRatings ` ,
787789instead of writing ` throw StatisticsError.noRatings `
788790when throwing an error in a function like this.
789791
@@ -845,10 +847,10 @@ In this code,
845847writing ` do throws(StatisticsError) ` indicates that
846848the ` do ` -` catch ` statement throws ` StatisticsError ` values as its errors.
847849Like other ` do ` -` catch ` statements,
848- the ` catch ` clause can either handle every possible error,
849- or it can propagate unhandled errors for some surrounding scope to handle.
850- Here, it handles all of the errors,
851- using a switch with one case for each enumeration value.
850+ the ` catch ` clause can either handle every possible error
851+ or propagate unhandled errors for some surrounding scope to handle.
852+ This code handles all of the errors,
853+ using a ` switch ` statement with one case for each enumeration value.
852854Like other ` catch ` clauses that don't have a pattern,
853855the clause matches any error
854856and binds the error to a local constant named ` error ` .
@@ -857,17 +859,17 @@ Because the `do`-`catch` statement throws `StatisticsError` values,
857859
858860<!-- XXX show multiple catch clauses with different patterns? -->
859861
860- The ` catch ` clause above uses a switch
862+ The ` catch ` clause above uses a ` switch ` statement
861863to match and handle each possible error.
862864If you tried to add a new case to ` StatisticsError `
863865without updating the error-handling code,
864866Swift would give you an error
865- because the switch wouldn't be exhaustive anymore.
867+ because the ` switch ` statement wouldn't be exhaustive anymore.
866868For a library that catches all of its own errors,
867869you could use this approach to ensure any new errors
868870get corresponding new code to handle them.
869871
870- If a function or ` do ` block throws only errors of a single type,
872+ If a function or ` do ` block throws errors of only a single type,
871873Swift infers that this code is using typed throws.
872874Using this shorter syntax,
873875you could write the ` do ` -` catch ` example above as follows:
889891
890892Even though the ` do ` -` catch ` block above
891893doesn't specify what type of error it throws,
892- it's still understood as throwing ` StatisticsError ` .
894+ Swift infers that it throws ` StatisticsError ` .
893895You can explicitly write ` throws(any Error) `
894896to avoid letting Swift infer typed throws.
895897
0 commit comments