Skip to content

Commit 34ea613

Browse files
use errors.AsType for error assertions
1 parent f15ad50 commit 34ea613

5 files changed

Lines changed: 10 additions & 23 deletions

File tree

content/docs/connect-udp/proxy.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ http.Handle("/masque", func(w http.ResponseWriter, r *http.Request) {
3535
// parse the UDP proxying request
3636
mreq, err := masque.ParseRequest(r, t)
3737
if err != nil {
38-
var perr *masque.RequestParseError
39-
if errors.As(err, &perr) {
38+
if perr, ok := errors.AsType[*masque.RequestParseError](err); ok {
4039
w.WriteHeader(perr.HTTPStatus)
4140
return
4241
}

content/docs/quic/connection.md

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -117,32 +117,23 @@ The most common way to handle an error is by interface-asserting it to `net.Erro
117117
The following example shows how to inspect an error in detail:
118118

119119
```go
120-
var (
121-
statelessResetErr *quic.StatelessResetError
122-
handshakeTimeoutErr *quic.HandshakeTimeoutError
123-
idleTimeoutErr *quic.IdleTimeoutError
124-
appErr *quic.ApplicationError
125-
transportErr *quic.TransportError
126-
vnErr *quic.VersionNegotiationError
127-
)
128-
switch {
129-
case errors.As(err, &statelessResetErr):
120+
if _, ok := errors.AsType[*quic.StatelessResetError](err); ok {
130121
// stateless reset
131-
case errors.As(err, &handshakeTimeoutErr):
122+
} else if _, ok := errors.AsType[*quic.HandshakeTimeoutError](err); ok {
132123
// connection timed out before completion of the handshake
133-
case errors.As(err, &idleTimeoutErr):
124+
} else if _, ok := errors.AsType[*quic.IdleTimeoutError](err); ok {
134125
// idle timeout
135-
case errors.As(err, &appErr):
126+
} else if appErr, ok := errors.AsType[*quic.ApplicationError](err); ok {
136127
// application error
137128
remote := appErr.Remote // was the error triggered by the peer?
138129
errorCode := appErr.ErrorCode // application-defined error code
139130
errorMessage := appErr.ErrorMessage // application-defined error message
140-
case errors.As(err, &transportErr):
131+
} else if transportErr, ok := errors.AsType[*quic.TransportError](err); ok {
141132
// transport error
142133
remote := transportErr.Remote // was the error triggered by the peer?
143134
errorCode := transportErr.ErrorCode // error code (RFC 9000, section 20.1)
144135
errorMessage := transportErr.ErrorMessage // error message
145-
case errors.As(err, &vnErr):
136+
} else if vnErr, ok := errors.AsType[*quic.VersionNegotiationError](err); ok {
146137
// version negotation error
147138
ourVersions := vnErr.Ours // locally supported QUIC versions
148139
theirVersions := vnErr.Theirs // QUIC versions support by the remote

content/docs/quic/streams.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,7 @@ When a stream is reset (i.e. when `CancelRead` or `CancelWrite` are used), appli
115115
QUIC itself does not interpret this value; instead, it is the responsibility of the application layer to assign specific meanings to different error codes.
116116

117117
```go
118-
var streamErr *quic.StreamError
119-
if errors.As(err, &streamErr) {
118+
if streamErr, ok := errors.AsType[*quic.StreamError](err); ok {
120119
errorCode := streamErr.ErrorCode
121120
}
122121
```

content/docs/webtransport/session.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ Similar to closing a `quic.Conn`, this action causes all calls to `AcceptStream`
2323

2424
On the receiver side, this error will be surfaced as a `webtransport.SessionError`:
2525
```go
26-
var sessErr *webtransport.SessionError
27-
if errors.As(err, &sessErr) {
26+
if sessErr, ok := errors.AsType[*webtransport.SessionError](err); ok {
2827
errorCode := sessErr.ErrorCode
2928
errorMessage := sessErr.Message
3029
}

content/docs/webtransport/streams.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ WebTransport itself does not interpret this value; instead, it is the responsibi
1818
Below is an example of how to type-assert an error as a `webtransport.StreamError`:
1919

2020
```go
21-
var streamErr *webtransport.StreamError
22-
if errors.As(err, &streamErr) {
21+
if streamErr, ok := errors.AsType[*webtransport.StreamError](err); ok {
2322
errorCode := streamErr.ErrorCode
2423
}
2524
```

0 commit comments

Comments
 (0)