Struct idalib_sys::hexrays::ctry_t
#[repr(C)]pub struct ctry_t {
pub _base: cblock_t,
pub catchs: qvector<ccatch_t>,
pub old_state: usize,
pub new_state: usize,
pub is_wind: bool,
}
Expand description
C++ Try statement. This structure is also used to represent wind statements.
Fields§
§_base: cblock_t
§catchs: qvector<ccatch_t>
< “catch all”, if present, must be the last element. < wind-statements must have “catch all” and nothing else.
old_state: usize
< old state number (internal, MSVC related)
new_state: usize
< new state number (internal, MSVC related)
is_wind: bool
Is C++ wind statement? (not part of the C++ language) MSVC generates code like the following to keep track of constructed objects and destroy them upon an exception. Example:
/* an object is constructed at this point / __wind { / some other code that may throw an exception / } __unwind { / this code is executed only if there was an exception / / in the __wind block. normally here we destroy the object */ */ after that the exception is passed to the / / exception handler, regular control flow is interrupted here. / } / regular logic continues here, if there were no exceptions / / also the object’s destructor is called */