home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / java / lang / exception.java < prev    next >
Text File  |  1995-08-11  |  3KB  |  118 lines

  1. /*
  2.  * @(#)Exception.java    1.12 95/01/31  
  3.  *
  4.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19.  
  20. package java.lang;
  21.  
  22. import java.lang.*;
  23.  
  24. /**
  25.  * An object signalling that an exceptional condition has occurred.
  26.  * All exceptions are a subclass of Exception. An exception contains
  27.  * a snapshot of the execution stack, this snapshot is used to print
  28.  * a stack backtrace. An exception also contains a message string.
  29.  * An example of catching an exception:
  30.  * <pre>
  31.  *    try {
  32.  *        int a[] = new int[2];
  33.  *        a[4];
  34.  *    } catch (ArrayIndexOutOfBoundsException e) {
  35.  *        System.out.println("an exception occurred: " + e.getMessage());
  36.  *        e.printStackTrace();
  37.  *    }
  38.  * </pre>
  39.  * @version     1.12, 31 Jan 1995
  40.  */
  41. public class Exception {
  42.     /* If you change this, change the number of
  43.      * pcN variables in StandardDefs.gt,
  44.      * class Exception
  45.      */
  46.     private static final int TRACE_BACK_SIZE = 10;
  47.     
  48.     private int pc0, pc1, pc2, pc3, pc4, pc5, pc6, pc7, pc8, pc9;
  49.     /**
  50.      * Specific detail about the exception.  For example,
  51.      * for FileNotFoundExceptions, this contains the name of
  52.      * the file that couldn't be found.
  53.      */
  54.     private String detailMessage;
  55.  
  56.     /**
  57.      * Constructs an exception with no detail message. The stack
  58.      * trace is automatically filled in.
  59.      */
  60.     public Exception() {
  61.     fillInStackTrace();
  62.     }
  63.  
  64.     /**
  65.      * Constructs an exception with the specified detail message.
  66.      * The stack trace is automatically filled in.
  67.      * @param message    the detail message
  68.      */
  69.     public Exception(String message) {
  70.     fillInStackTrace();
  71.     detailMessage = message;
  72.     }
  73.  
  74.     /**
  75.      * Gets the message.
  76.      * @return the detail message of the exception
  77.      */
  78.     public String getMessage() {
  79.     return detailMessage;
  80.     }
  81.  
  82.     /**
  83.      * Returns a short description of the exception.
  84.      * @return a string describing the exception
  85.      */
  86.     public String toString() {
  87.     String s = getClass().getName();
  88.     if (detailMessage != null) {
  89.         s = s + ": " + detailMessage;
  90.     }
  91.     return s;
  92.     }
  93.  
  94.     /**
  95.      * Prints the exception and the exception's stack trace.
  96.      */
  97.     public native void printStackTrace();
  98.  
  99.     /**
  100.      * Fills in the excecution stack trace. This is useful only
  101.      * when rethrowing an exception. For example:
  102.      * <pre>
  103.      *       try {
  104.      *            a = b / c;
  105.      *       } catch(ArithmeticException e) {
  106.      *        a = Number.MAX_VALUE;
  107.      *            throw e.fillInStackTrace();
  108.      *       }
  109.      * </pre>
  110.      * @return the exception itself
  111.      * @see Exception#printStackTrace
  112.      */
  113.     public native Exception fillInStackTrace();
  114. }
  115.  
  116.  
  117.  
  118.