/*
******************************************************************************
* Copyright (C) 2004-2006, International Business Machines Corporation and   *
* others. All Rights Reserved.                                               *
******************************************************************************
*/

package com.ibm.icu.util;

/**
 * Exception thrown when the requested resource type 
 * is not the same type as the available resource
 * @author ram
 * @draft ICU 3.0
 * @provisional This API might change or be removed in a future release.
 */
public class UResourceTypeMismatchException extends RuntimeException {
    // Generated by serialver from JDK 1.4.1_01
    static final long serialVersionUID = 1286569061095434541L;
    
    /**
     * Constuct the exception with the given message
     * @param msg the error message for this exception
     * @draft ICU 3.0
     * @provisional This API might change or be removed in a future release.
     */
    public UResourceTypeMismatchException(String msg){
        super(msg);       
    }
    /*
     * Returns the error message stored in this exception
     * @return String the error message string
     * @draft ICU 3.0
     * @provisional This API might change or be removed in a future release.
     *
    public String toString(){
        return message;   
    }
    */
}
