exceptions.h File Reference


Detailed Description

Exceptions subsystem


Defines

#define exn_try   (if (exn_function_try()))
 Wrapper for exn_function_try.
#define exn_catch   (th) (if ( th = exn_function_catch()))
 Wrapper for exn_function_catch.
#define ASSERT_THROW_AREA   assert(is_unwindable());
#define ASSERT_RAISE_AREA   assert(!is_unwindable());
#define BEGIN_RAISE_AREA
#define END_RAISE_AREA

Functions

VMEXPORT jthrowable exn_get ()
 Returns the thread-local exception object or NULL if no exception occured.
VMEXPORT Classexn_get_class ()
VMEXPORT const char * exn_get_name ()
VMEXPORT bool exn_raised ()
 Returns true if the thread-local exception object is set.
VMEXPORT void exn_clear ()
 Clears the thread-local exception object.
jthrowable exn_create (Exception *exception)
 Creates exception object.
jthrowable exn_create (Class *exc_class)
jthrowable exn_create (Class *exc_class, jthrowable cause)
jthrowable exn_create (Class *exc_class, const char *message)
jthrowable exn_create (Class *exc_class, const char *message, jthrowable cause)
VMEXPORT jthrowable exn_create (const char *exc_name)
 Creates exception object.
VMEXPORT jthrowable exn_create (const char *exc_name, jthrowable cause)
 Creates exception object.
VMEXPORT jthrowable exn_create (const char *exc_name, const char *message)
 Creates exception object.
VMEXPORT jthrowable exn_create (const char *exc_name, const char *message, jthrowable cause)
 Creates exception object.
VMEXPORT bool is_unwindable ()
 Returns true if frame is unwindable and false if isn't.
bool set_unwindable (bool unwindable)
 Sets unwindable property of frame.
void exn_throw_object (jthrowable exc_object)
 Throws an exception object.
void exn_throw_by_class (Class *exc_class)
 Throws an exceptionas lazy.
void exn_throw_by_class (Class *exc_class, jthrowable exc_cause)
void exn_throw_by_class (Class *exc_class, const char *exc_message)
void exn_throw_by_class (Class *exc_class, const char *exc_message, jthrowable exc_cause)
VMEXPORT void exn_throw_by_name (const char *exception_name)
 Throws an exceptionas lazy.
VMEXPORT void exn_throw_by_name (const char *exception_name, jthrowable cause)
 Throws an exceptionas lazy.
VMEXPORT void exn_throw_by_name (const char *exception_name, const char *message)
 Throws an exceptionas lazy.
VMEXPORT void exn_throw_by_name (const char *exception_name, const char *message, jthrowable cause)
 Throws an exceptionas lazy.
VMEXPORT void exn_raise_object (jthrowable exc_object)
 Sets exceptions as a thread local exception.
void exn_raise_by_class (Class *exc_class)
 Sets exception lazy as a thread local exception.
void exn_raise_by_class (Class *exc_class, jthrowable exc_cause)
void exn_raise_by_class (Class *exc_class, const char *exc_message)
void exn_raise_by_class (Class *exc_class, const char *exc_message, jthrowable exc_cause)
VMEXPORT void exn_raise_by_name (const char *exception_name)
 Sets exception lazy as a thread local exception.
VMEXPORT void exn_raise_by_name (const char *exception_name, jthrowable exc_cause)
 Sets exception lazy as a thread local exception.
VMEXPORT void exn_raise_by_name (const char *exception_name, const char *message)
 Sets exception lazy as a thread local exception.
VMEXPORT void exn_raise_by_name (const char *exception_name, const char *message, jthrowable exc_cause)
 Sets exception lazy as a thread local exception.
bool exn_function_try ()
 Pushes dummy non-unwindable stack frame in order to prevent stack unwinding.
jthrowable exn_function_catch ()
 pops dummy non-unwindable stack frame
void exn_print_stack_trace (FILE *f, jthrowable exc)
void print_uncaught_exception_message (FILE *f, char *context_message, jthrowable exc)
void exn_rethrow ()
void exn_rethrow_if_pending ()
bool set_guard_stack ()
void remove_guard_stack (vm_thread_t vm_thread)
void init_stack_info ()
void * get_exception_catch_stack_addr (void *curr_ip)
VMEXPORT size_t get_available_stack_size ()
VMEXPORT bool check_available_stack_size (size_t required_size)
VMEXPORT size_t get_default_stack_size ()
VMEXPORT size_t get_restore_stack_size ()
bool check_stack_size_enough_for_exception_catch (void *sp)


Define Documentation

#define exn_try   (if (exn_function_try()))

Wrapper for exn_function_try.

#define exn_catch   (th) (if ( th = exn_function_catch()))

Wrapper for exn_function_catch.

#define ASSERT_THROW_AREA   assert(is_unwindable());

#define ASSERT_RAISE_AREA   assert(!is_unwindable());

#define BEGIN_RAISE_AREA

Value:

{ \
bool unwindable = set_unwindable(false);\
if (unwindable) exn_rethrow_if_pending();

#define END_RAISE_AREA

Value:

if (unwindable) exn_rethrow_if_pending();\
set_unwindable(unwindable);\
}


Function Documentation

VMEXPORT jthrowable exn_get (  ) 

Returns the thread-local exception object or NULL if no exception occured.

VMEXPORT Class* exn_get_class (  ) 

VMEXPORT const char* exn_get_name (  ) 

VMEXPORT bool exn_raised (  ) 

Returns true if the thread-local exception object is set.

VMEXPORT void exn_clear (  ) 

Clears the thread-local exception object.

Note:
rename of clear_current_thread_exception(). It may be eliminated if exn_catch() will be used and will clean thread exception.

jthrowable exn_create ( Exception exception  ) 

Creates exception object.

jthrowable exn_create ( Class exc_class  ) 

jthrowable exn_create ( Class exc_class,
jthrowable  cause 
)

jthrowable exn_create ( Class exc_class,
const char *  message 
)

jthrowable exn_create ( Class exc_class,
const char *  message,
jthrowable  cause 
)

VMEXPORT jthrowable exn_create ( const char *  exc_name  ) 

Creates exception object.

VMEXPORT jthrowable exn_create ( const char *  exc_name,
jthrowable  cause 
)

Creates exception object.

VMEXPORT jthrowable exn_create ( const char *  exc_name,
const char *  message 
)

Creates exception object.

VMEXPORT jthrowable exn_create ( const char *  exc_name,
const char *  message,
jthrowable  cause 
)

Creates exception object.

VMEXPORT bool is_unwindable (  ) 

Returns true if frame is unwindable and false if isn't.

bool set_unwindable ( bool  unwindable  ) 

Sets unwindable property of frame.

If frame is unwindable property should be true and should be false if frame isn't unwindable. Returns previous value of unwindable property.

void exn_throw_object ( jthrowable  exc_object  ) 

Throws an exception object.

Note:
internal convenience function, may not be exposed to VMI interface.

void exn_throw_by_class ( Class exc_class  ) 

Throws an exceptionas lazy.

Does not return in case of destructive exception propagation.

Note:
internal convenience function, may not be exposed to VMI interface.

void exn_throw_by_class ( Class exc_class,
jthrowable  exc_cause 
)

void exn_throw_by_class ( Class exc_class,
const char *  exc_message 
)

void exn_throw_by_class ( Class exc_class,
const char *  exc_message,
jthrowable  exc_cause 
)

VMEXPORT void exn_throw_by_name ( const char *  exception_name  ) 

Throws an exceptionas lazy.

Does not return in case of destructive exception propagation.

VMEXPORT void exn_throw_by_name ( const char *  exception_name,
jthrowable  cause 
)

Throws an exceptionas lazy.

Does not return in case of destructive exception propagation.

VMEXPORT void exn_throw_by_name ( const char *  exception_name,
const char *  message 
)

Throws an exceptionas lazy.

Does not return in case of destructive exception propagation.

VMEXPORT void exn_throw_by_name ( const char *  exception_name,
const char *  message,
jthrowable  cause 
)

Throws an exceptionas lazy.

Does not return in case of destructive exception propagation.

VMEXPORT void exn_raise_object ( jthrowable  exc_object  ) 

Sets exceptions as a thread local exception.

Note:
explicit non-destructive semantics should be deduced from context.

void exn_raise_by_class ( Class exc_class  ) 

Sets exception lazy as a thread local exception.

Note:
internal convenience function, may not be exposed to VMI interface.

explicit non-destructive semantics should be deduced from context.

void exn_raise_by_class ( Class exc_class,
jthrowable  exc_cause 
)

void exn_raise_by_class ( Class exc_class,
const char *  exc_message 
)

void exn_raise_by_class ( Class exc_class,
const char *  exc_message,
jthrowable  exc_cause 
)

VMEXPORT void exn_raise_by_name ( const char *  exception_name  ) 

Sets exception lazy as a thread local exception.

Note:
explicit non-destructive semantics should be deduced from context.

VMEXPORT void exn_raise_by_name ( const char *  exception_name,
jthrowable  exc_cause 
)

Sets exception lazy as a thread local exception.

Note:
explicit non-destructive semantics should be deduced from context.

VMEXPORT void exn_raise_by_name ( const char *  exception_name,
const char *  message 
)

Sets exception lazy as a thread local exception.

Note:
explicit non-destructive semantics should be deduced from context.

VMEXPORT void exn_raise_by_name ( const char *  exception_name,
const char *  message,
jthrowable  exc_cause 
)

Sets exception lazy as a thread local exception.

Note:
explicit non-destructive semantics should be deduced from context.

bool exn_function_try (  ) 

Pushes dummy non-unwindable stack frame in order to prevent stack unwinding.

After this returns true. If unwinding is happnened control coming back into this function, and after this it returns false.

Note:
experimental

jthrowable exn_function_catch (  ) 

pops dummy non-unwindable stack frame

returns the current thread exception object or NULL if no exception occured.

Note:
experimental

void exn_print_stack_trace ( FILE *  f,
jthrowable  exc 
)

void print_uncaught_exception_message ( FILE *  f,
char *  context_message,
jthrowable  exc 
)

void exn_rethrow (  ) 

void exn_rethrow_if_pending (  ) 

bool set_guard_stack (  ) 

void remove_guard_stack ( vm_thread_t  vm_thread  ) 

void init_stack_info (  ) 

void* get_exception_catch_stack_addr ( void *  curr_ip  ) 

VMEXPORT size_t get_available_stack_size (  ) 

VMEXPORT bool check_available_stack_size ( size_t  required_size  ) 

VMEXPORT size_t get_default_stack_size (  ) 

VMEXPORT size_t get_restore_stack_size (  ) 

bool check_stack_size_enough_for_exception_catch ( void *  sp  ) 


Genereated on Tue Mar 11 19:25:56 2008 by Doxygen.

(c) Copyright 2005, 2008 The Apache Software Foundation or its licensors, as applicable.