Exemple #1
0
void Exceptions::_throw(Thread* thread, const char* file, int line, Handle h_exception, const char* message) {
    assert(h_exception() != NULL, "exception should not be NULL");

    // tracing (do this up front - so it works during boot strapping)
    if (TraceExceptions) {
        ttyLocker ttyl;
        ResourceMark rm;
        tty->print_cr("Exception <%s>%s%s (" INTPTR_FORMAT " ) \n"
                      "thrown [%s, line %d]\nfor thread " INTPTR_FORMAT,
                      h_exception->print_value_string(),
                      message ? ": " : "", message ? message : "",
                      (address)h_exception(), file, line, thread);
    }
    // for AbortVMOnException flag
    NOT_PRODUCT(Exceptions::debug_check_abort(h_exception, message));

    // Check for special boot-strapping/vm-thread handling
    if (special_exception(thread, file, line, h_exception)) return;

    assert(h_exception->is_a(SystemDictionary::Throwable_klass()), "exception is not a subclass of java/lang/Throwable");

    // set the pending exception
    thread->set_pending_exception(h_exception(), file, line);

    // vm log
    Events::log_exception(thread, "Threw " INTPTR_FORMAT " at %s:%d", (address)h_exception(), file, line);
}
Exemple #2
0
// Throw an exception with a message and a cause
void Exceptions::_throw_msg_cause(Thread* thread, const char* file, int line, symbolHandle h_name, const char* message, Handle h_cause, Handle h_loader, Handle h_protection_domain) {
  // Check for special boot-strapping/vm-thread handling
  if (special_exception(thread, file, line, h_name, message)) return;
  // Create and throw exception and init cause
  Handle h_exception = new_exception(thread, h_name, message, h_cause, h_loader, h_protection_domain);
  _throw(thread, file, line, h_exception, message);
}
Exemple #3
0
void Exceptions::_throw_cause(Thread* thread, const char* file, int line, Symbol* name, Handle h_cause,
                              Handle h_loader, Handle h_protection_domain) {
    // Check for special boot-strapping/vm-thread handling
    if (special_exception(thread, file, line, h_cause)) return;
    // Create and throw exception
    Handle h_exception = new_exception(thread, name, h_cause, h_loader, h_protection_domain);
    _throw(thread, file, line, h_exception, NULL);
}
Exemple #4
0
void Exceptions::_throw_args(Thread* thread, const char* file, int line, Symbol* name, Symbol* signature, JavaCallArguments *args) {
    // Check for special boot-strapping/vm-thread handling
    if (special_exception(thread, file, line, name, NULL)) return;
    // Create and throw exception
    Handle h_loader(thread, NULL);
    Handle h_prot(thread, NULL);
    Handle exception = new_exception(thread, name, signature, args, h_loader, h_prot);
    _throw(thread, file, line, exception);
}