Where Online Learning is simpler!
The C and C++ Include Header Files
/usr/include/node/v8-exception.h
$ cat -n /usr/include/node/v8-exception.h 1 // Copyright 2021 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef INCLUDE_V8_EXCEPTION_H_ 6 #define INCLUDE_V8_EXCEPTION_H_ 7 8 #include
9 10 #include "v8-local-handle.h" // NOLINT(build/include_directory) 11 #include "v8config.h" // NOLINT(build/include_directory) 12 13 namespace v8 { 14 15 class Context; 16 class Isolate; 17 class Message; 18 class StackTrace; 19 class String; 20 class Value; 21 22 namespace internal { 23 class Isolate; 24 class ThreadLocalTop; 25 } // namespace internal 26 27 /** 28 * Create new error objects by calling the corresponding error object 29 * constructor with the message. 30 */ 31 class V8_EXPORT Exception { 32 public: 33 static Local
RangeError(Local
message, 34 Local
options = {}); 35 static Local
ReferenceError(Local
message, 36 Local
options = {}); 37 static Local
SyntaxError(Local
message, 38 Local
options = {}); 39 static Local
TypeError(Local
message, 40 Local
options = {}); 41 static Local
WasmCompileError(Local
message, 42 Local
options = {}); 43 static Local
WasmLinkError(Local
message, 44 Local
options = {}); 45 static Local
WasmRuntimeError(Local
message, 46 Local
options = {}); 47 static Local
Error(Local
message, Local
options = {}); 48 49 /** 50 * Creates an error message for the given exception. 51 * Will try to reconstruct the original stack trace from the exception value, 52 * or capture the current stack trace if not available. 53 */ 54 static Local
CreateMessage(Isolate* isolate, Local
exception); 55 56 /** 57 * Returns the original stack trace that was captured at the creation time 58 * of a given exception, or an empty handle if not available. 59 */ 60 static Local
GetStackTrace(Local
exception); 61 }; 62 63 /** 64 * An external exception handler. 65 */ 66 class V8_EXPORT TryCatch { 67 public: 68 /** 69 * Creates a new try/catch block and registers it with v8. Note that 70 * all TryCatch blocks should be stack allocated because the memory 71 * location itself is compared against JavaScript try/catch blocks. 72 */ 73 explicit TryCatch(Isolate* isolate); 74 75 /** 76 * Unregisters and deletes this try/catch block. 77 */ 78 ~TryCatch(); 79 80 /** 81 * Returns true if an exception has been caught by this try/catch block. 82 */ 83 bool HasCaught() const; 84 85 /** 86 * For certain types of exceptions, it makes no sense to continue execution. 87 * 88 * If CanContinue returns false, the correct action is to perform any C++ 89 * cleanup needed and then return. If CanContinue returns false and 90 * HasTerminated returns true, it is possible to call 91 * CancelTerminateExecution in order to continue calling into the engine. 92 */ 93 bool CanContinue() const; 94 95 /** 96 * Returns true if an exception has been caught due to script execution 97 * being terminated. 98 * 99 * There is no JavaScript representation of an execution termination 100 * exception. Such exceptions are thrown when the TerminateExecution 101 * methods are called to terminate a long-running script. 102 * 103 * If such an exception has been thrown, HasTerminated will return true, 104 * indicating that it is possible to call CancelTerminateExecution in order 105 * to continue calling into the engine. 106 */ 107 bool HasTerminated() const; 108 109 /** 110 * Throws the exception caught by this TryCatch in a way that avoids 111 * it being caught again by this same TryCatch. As with ThrowException 112 * it is illegal to execute any JavaScript operations after calling 113 * ReThrow; the caller must return immediately to where the exception 114 * is caught. 115 */ 116 Local
ReThrow(); 117 118 /** 119 * Returns the exception caught by this try/catch block. If no exception has 120 * been caught an empty handle is returned. 121 */ 122 Local
Exception() const; 123 124 /** 125 * Returns the .stack property of an object. If no .stack 126 * property is present an empty handle is returned. 127 */ 128 V8_WARN_UNUSED_RESULT static MaybeLocal
StackTrace( 129 Local
context, Local
exception); 130 131 /** 132 * Returns the .stack property of the thrown object. If no .stack property is 133 * present or if this try/catch block has not caught an exception, an empty 134 * handle is returned. 135 */ 136 V8_WARN_UNUSED_RESULT MaybeLocal
StackTrace( 137 Local
context) const; 138 139 /** 140 * Returns the message associated with this exception. If there is 141 * no message associated an empty handle is returned. 142 */ 143 Local
Message() const; 144 145 /** 146 * Clears any exceptions that may have been caught by this try/catch block. 147 * After this method has been called, HasCaught() will return false. Cancels 148 * the scheduled exception if it is caught and ReThrow() is not called before. 149 * 150 * It is not necessary to clear a try/catch block before using it again; if 151 * another exception is thrown the previously caught exception will just be 152 * overwritten. However, it is often a good idea since it makes it easier 153 * to determine which operation threw a given exception. 154 */ 155 void Reset(); 156 157 /** 158 * Set verbosity of the external exception handler. 159 * 160 * By default, exceptions that are caught by an external exception 161 * handler are not reported. Call SetVerbose with true on an 162 * external exception handler to have exceptions caught by the 163 * handler reported as if they were not caught. 164 */ 165 void SetVerbose(bool value); 166 167 /** 168 * Returns true if verbosity is enabled. 169 */ 170 bool IsVerbose() const; 171 172 /** 173 * Set whether or not this TryCatch should capture a Message object 174 * which holds source information about where the exception 175 * occurred. True by default. 176 */ 177 void SetCaptureMessage(bool value); 178 179 TryCatch(const TryCatch&) = delete; 180 void operator=(const TryCatch&) = delete; 181 182 private: 183 // Declaring operator new and delete as deleted is not spec compliant. 184 // Therefore declare them private instead to disable dynamic alloc 185 void* operator new(size_t size); 186 void* operator new[](size_t size); 187 void operator delete(void*, size_t); 188 void operator delete[](void*, size_t); 189 190 /** 191 * There are cases when the raw address of C++ TryCatch object cannot be 192 * used for comparisons with addresses into the JS stack. The cases are: 193 * 1) ARM, ARM64 and MIPS simulators which have separate JS stack. 194 * 2) Address sanitizer allocates local C++ object in the heap when 195 * UseAfterReturn mode is enabled. 196 * This method returns address that can be used for comparisons with 197 * addresses into the JS stack. When neither simulator nor ASAN's 198 * UseAfterReturn is enabled, then the address returned will be the address 199 * of the C++ try catch handler itself. 200 */ 201 internal::Address JSStackComparableAddressPrivate() { 202 return js_stack_comparable_address_; 203 } 204 205 void ResetInternal(); 206 207 internal::Isolate* i_isolate_; 208 TryCatch* next_; 209 void* exception_; 210 void* message_obj_; 211 internal::Address js_stack_comparable_address_; 212 bool is_verbose_ : 1; 213 bool can_continue_ : 1; 214 bool capture_message_ : 1; 215 bool rethrow_ : 1; 216 217 friend class internal::Isolate; 218 friend class internal::ThreadLocalTop; 219 }; 220 221 } // namespace v8 222 223 #endif // INCLUDE_V8_EXCEPTION_H_
Contact us
|
About us
|
Term of use
|
Copyright © 2000-2025 MyWebUniversity.com ™