Skip to content
File

Blob: src/workerd/util/uncaught-exception-source.h

cpp38 lines
1#pragma once
2 
3#include <kj/string.h>
4 
5namespace workerd {
6 
7enum class UncaughtExceptionSource {
8 INTERNAL,
9 INTERNAL_ASYNC,
10 // We catch, log, and rethrow some exceptions at these intermediate levels, in case higher-level
11 // handlers fail.
12 
13 ASYNC_TASK,
14 REQUEST_HANDLER,
15 TRACE_HANDLER,
16 ALARM_HANDLER,
17};
18 
19inline kj::StringPtr KJ_STRINGIFY(UncaughtExceptionSource value) {
20 switch (value) {
21 case UncaughtExceptionSource::INTERNAL:
22 return "Uncaught"_kj;
23 case UncaughtExceptionSource::INTERNAL_ASYNC:
24 return "Uncaught (in promise)"_kj;
25 case UncaughtExceptionSource::ASYNC_TASK:
26 return "Uncaught (async)"_kj;
27 case UncaughtExceptionSource::REQUEST_HANDLER:
28 return "Uncaught (in response)"_kj;
29 case UncaughtExceptionSource::TRACE_HANDLER:
30 return "Uncaught (in trace)"_kj;
31 case UncaughtExceptionSource::ALARM_HANDLER:
32 return "Uncaught (in alarm)"_kj;
33 };
34 KJ_UNREACHABLE;
35}
36 
37} // namespace workerd