/*
 * "Peko" Visual Novel System
 *
 * All Rights Reserved.
 * Copyright (c) 1999-2003 Tsukuba Bunko.
 *
 * $Id: InitializationError.java,v 1.2.2.1 2003/12/11 10:09:11 ppoi Exp $
 */
package tsukuba_bunko.peko;

import	java.io.PrintStream;
import	java.io.PrintWriter;


/**
 * 初期化が失敗したことを通知する致命的例外です。
 * @author	$Author: ppoi $
 * @version	$Revision: 1.2.2.1 $
 */
public class InitializationError	extends Error	{

	/**
	 * 基になる例外オブジェクト
	 */
	private Throwable	_base = null;


	/**
	 * <code>InitializationError</code> のインスタンスを作成します。
	 */
	public InitializationError()
	{
		super();
	}

	/**
	 * <code>InitializationError</code> のインスタンスを作成します。
	 * @param	message	エラーメッセージ
	 */
	public InitializationError( String message )
	{
		super( message );
	}

	/**
	 * <code>InitializationError</code> のインスタンスを作成します。
	 * @param	e	基になる例外オブジェクト
	 */
	public InitializationError( Throwable e )
	{
		super( e.getMessage() );
		_base = e;
	}

	/**
	 * <code>InitializationError</code> のインスタンスを作成します。
	 * @param	message	エラーメッセージ
	 * @param	e	基になる例外オブジェクト
	 */
	public InitializationError( String message, Throwable e )
	{
		super( message );
		_base = e;
	}


//
//	Throwable の実装
//
	public void printStackTrace()
	{
		super.printStackTrace();
		if( _base != null )	{
			System.err.println( "source exception: " + _base.getClass().getName() );
			_base.printStackTrace();
		}
	}

	public void printStackTrace( PrintStream ps )
	{
		super.printStackTrace( ps );
		if( _base != null )	{
			ps.println( "source exception: " + _base.getClass().getName() );
			_base.printStackTrace( ps );
		}
	}

	public void printStackTrace( PrintWriter pw )
	{
		super.printStackTrace();
		if( _base != null )	{
			pw.println( "source exception: " + _base.getClass().getName() );
			_base.printStackTrace( pw );
		}
	}
}