Skip to content

Commit cee1db1

Browse files
committed
Add a common base class for requests exceptions
Sometimes, one wants to catch and handle all exceptions thrown by requests regardless if it is an HTTP 500 due to a server problem or a DNS problem. This patch adds such a base class which makes error handling easier. This class is similar in purpose to RequestException in the Python requests library.
1 parent b32f7b4 commit cee1db1

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed
+7-4
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package requests
22

3+
// base class for all custom exceptions thrown by requests.
4+
class RequestsException(val message: String, val cause: Option[Throwable] = None) extends Exception(message, cause.getOrElse(null))
5+
36
class TimeoutException(val url: String, val readTimeout: Int, val connectTimeout: Int)
4-
extends Exception(s"Request to $url timed out. (readTimeout: $readTimeout, connectTimout: $connectTimeout)")
7+
extends RequestsException(s"Request to $url timed out. (readTimeout: $readTimeout, connectTimout: $connectTimeout)")
58

69
class UnknownHostException(val url: String, val host: String)
7-
extends Exception(s"Unknown host $host in url $url")
10+
extends RequestsException(s"Unknown host $host in url $url")
811

912
class InvalidCertException(val url: String, cause: Throwable)
10-
extends Exception(s"Unable to validate SSL certificates for $url", cause)
13+
extends RequestsException(s"Unable to validate SSL certificates for $url", Some(cause))
1114

1215
class RequestFailedException(val response: Response)
13-
extends Exception(
16+
extends RequestsException(
1417
s"Request to ${response.url} failed with status code ${response.statusCode}\n${response.text()}"
1518
)

0 commit comments

Comments
 (0)