// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
/*
 *******************************************************************************
 *   Copyright (C) 2001-2008, International Business Machines
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 */

package com.ibm.icu.text;

/**
 * Thrown by ArabicShaping when there is a shaping error.
 * @stable ICU 2.0
 */
public final class ArabicShapingException extends Exception {
    // generated by serialver from JDK 1.4.1_01
    static final long serialVersionUID = 5261531805497260490L;
    
    /**
     * Construct the exception with the given message
     * @param message the error message for this exception
     * @stable ICU 3.8
     */
    public ArabicShapingException(String message) {
        super(message);
    }
}
