Errors#
When any method invoked against the ngrok API returns an error, a Exception of
ngrok.Error
will be raised.
The exception includes details that will allow you to robustly handle any error
returned by the API. The ngrok.Error.error_code
field allows you to
handle any error in the ngrok system. Consult our API Errors Documentation for the list of error codes the API may
return.
Handling Errors#
If the API returns an unexpected 404, a ngrok.NotFoundError
will be
raised. Ensure that you check for it first because it is a subclass of ngrok.Error
.
try:
client.ip_policies.get(id)
except ngrok.NotFoundError as e:
client.ip_policies.create()
except ngrok.Error as e:
# something else happened
Other validation errors are best distinguished by their error code. Consult our documentation for the list of all ngrok error codes.
try:
client.edges.https.create(hostports=["url-without-port.ngrok.io"])
except ngrok.Error as e:
if e.error_code == "ERR_NGROK_7104":
# handle a specific condition
else:
raise
If the ngrok API fails with an undefined response or there is some kind of
network error, there are no guarantees about the type of exception thrown
at that point it is best to use a naked except
block or to catch a RuntimeError
.
try:
client.ip_policies.create()
except RuntimeError:
# an unexpected network error that you could retry
Exception Classes#
- exception ngrok.Error(error_code, message, http_status_code, details)[source]#
Raised by failed ngrok API operations.
This class encapsulates details about the error to make it simple for callers to introspect the error and take action on it.
- Parameters:
error_code (
Optional
[int
,None
]) – The unique ngrok error code indicating why the operation failed.message (
str
) – Human-readable string explaining the error.http_status_code (
int
) – HTTP status code returned by the server.details (
Any
) – Arbitrary additional details about the error.
- property operation_id#
OperationID returns the unique trace ID assigned by ngrok to this API request.