Java IDL: Exceptions (original) (raw)

CORBA has two types of exceptions: standard system exceptions which are fully specified by the OMG and user exceptions which are defined by the individual application programmer. CORBA exceptions are a little different from Java exception objects, but those differences are largely handled in the mapping from IDL to Java.

Topics in this section include:

Differences Between CORBA and Java Exceptions

To specify an exception in IDL, the interface designer uses the_raises_ keyword. This is similar to the _throws_specification in Java. When you use the exception keyword in IDL you create a user-defined exception. The standard system exceptions need not (and cannot) be specified this way.

System Exceptions

CORBA defines a set of standard system exceptions, which are generally raised by the ORB libraries to signal systemic error conditions like:

All IDL operations can throw system exceptions when invoked. The interface designer need not specify anything to enable operations in the interface to throw system exceptions -- the capability is automatic.

This makes sense because no matter how trivial an operation's implementation is, the potential of an operation invocation coming from a client that is in another process, and perhaps (likely) on another machine, means that a whole range of errors is possible.

Therefore, a CORBA client should always catch CORBA system exceptions. Moreover, developers cannot rely on the Java compiler to notify them of a system exception they should catch, because CORBA system exceptions are descendants ofjava.lang.RuntimeException.

System Exception Structure

All CORBA system exceptions have the same structure:

exception { // descriptive of error unsigned long minor; // more detail about error CompletionStatus completed; // yes, no, maybe }   System exceptions are subtypes ofjava.lang.RuntimeException throughorg.omg.CORBA.SystemException:

java.lang.Exception | +--java.lang.RuntimeException | +--org.omg.CORBA.SystemException | +--BAD_PARAM | +--//etc.  

Minor Codes

All CORBA system exceptions have a minor code field, a number that provides additional information about the nature of the failure that caused the exception. Minor code meanings are not specified by the OMG; each ORB vendor specifies appropriate minor codes for that implementation. For the meaning of minor codes thrown by the Java ORB, see Minor code meanings .

Completion Status

All CORBA system exceptions have a completion status field, indicating the status of the operation that threw the exception. The completion codes are:

COMPLETED_YES

The object implementation has completed processing prior to the exception being raised.

COMPLETED_NO

The object implementation was not invoked prior to the exception being raised.

COMPLETED_MAYBE

The status of the invocation is unknown.

User Exceptions

CORBA user exceptions are subtypes ofjava.lang.Exception throughorg.omg.CORBA.UserException:

java.lang.Exception | +--org.omg.CORBA.UserException | +-- Stocks.BadSymbol | +--//etc.

Each user-defined exception specified in IDL results in a generated Java exception class. These exceptions are entirely defined and implemented by the programmer

Minor Code Meanings

System exceptions all have a field minor that allows CORBA vendors to provide additional information about the cause of the exception. For a list of standard OMG minor code exceptions (OMGVMCID), refer to the OMG document at http://www.omg.org/docs/omg/03-01-04.txt.

Some of the most common Sun minor code exceptions are the following:

If none of these suggestions work for you, or if you encounter a different Sun minor code exception, post a message to the developer forum at http://forum.java.sun.com.

When requesting the meaning of a minor code please include the following information:


Home

Oracle and/or its affiliates Java Technology Copyright © 1993, 2018, Oracle and/or its affiliates. All rights reserved. Contact Us