001    
002    package railo.runtime.exp;
003    
004    import railo.runtime.config.Config;
005    import railo.runtime.type.Collection;
006    import railo.runtime.type.KeyImpl;
007    
008    /**
009     *
010     *
011     * To change the template for this generated type comment go to
012     * Window>Preferences>Java>Code Generation>Code and Comments
013     */
014    public class ExpressionException extends PageExceptionImpl {
015    
016            private static final Collection.Key ERR_NUMBER = KeyImpl.intern("ErrNumber");
017            /**
018             * Class Constuctor
019             * @param message error message
020             */
021            public ExpressionException(String message) {
022                    super(message,"expression"); 
023            }
024    
025            /**
026             * Class Constuctor
027             * @param message error message
028             * @param detail detailed error message
029             */
030            public ExpressionException(String message, String detail) {
031                    super(message,"expression");
032                    setDetail(detail);
033            }
034            
035            @Override
036            public CatchBlock getCatchBlock(Config config) {
037                    CatchBlock sct=super.getCatchBlock(config);
038                    sct.setEL(ERR_NUMBER,new Double(0));
039                    return sct;
040            }
041        /**
042         * @param e
043         * @return pageException
044         */
045        public static ExpressionException newInstance(Exception e) {
046            if(e instanceof ExpressionException) return (ExpressionException) e;
047            else if(e instanceof PageException) {
048                PageException pe=(PageException)e;
049                    ExpressionException ee = new ExpressionException(pe.getMessage());
050                    ee.detail=pe.getDetail();
051                    ee.setStackTrace(pe.getStackTrace());
052                    return ee;
053            }
054            else  {
055                    ExpressionException ee = new ExpressionException(e.getMessage());
056                    ee.setStackTrace(e.getStackTrace());
057                    return ee;
058            }
059        }
060    }