001/* 002 Licensed to the Apache Software Foundation (ASF) under one or more 003 contributor license agreements. See the NOTICE file distributed with 004 this work for additional information regarding copyright ownership. 005 The ASF licenses this file to You under the Apache License, Version 2.0 006 (the "License"); you may not use this file except in compliance with 007 the License. You may obtain a copy of the License at 008 009 http://www.apache.org/licenses/LICENSE-2.0 010 011 Unless required by applicable law or agreed to in writing, software 012 distributed under the License is distributed on an "AS IS" BASIS, 013 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 See the License for the specific language governing permissions and 015 limitations under the License. 016 */ 017 018package org.apache.commons.cli; 019 020/** 021 * Base for Exceptions thrown during parsing of a command-line. 022 */ 023public class ParseException extends Exception { 024 025 /** 026 * This exception {@code serialVersionUID}. 027 */ 028 private static final long serialVersionUID = 9112808380089253192L; 029 030 /** 031 * Converts any exception except {@code UnsupportedOperationException} to a {@code ParseException}. 032 * if {@code e} is an instance of {@code ParseException} it is returned, otherwise a {@code ParseException} is 033 * created that wraps it. 034 * <p> 035 * Note: {@code UnsupportedOperationException} are not wrapped. This is to solve a legacy expected exception problem and will be 036 * removed in the future.</p> 037 * @param e the exception to convert. 038 * @return the ParseException. 039 * @throws UnsupportedOperationException due to legacy expectations. Will be removed in the future. 040 * @since 1.7.0 041 */ 042 public static ParseException wrap(final Throwable e) throws UnsupportedOperationException { 043 if (e instanceof UnsupportedOperationException) { 044 throw (UnsupportedOperationException) e; 045 } 046 047 if (e instanceof ParseException) { 048 return (ParseException) e; 049 } 050 return new ParseException(e); 051 } 052 053 /** 054 * Constructs a new {@code ParseException} with the specified detail message. 055 * 056 * @param message the detail message 057 */ 058 public ParseException(final String message) { 059 super(message); 060 } 061 062 /** 063 * Constructs a new {@code ParseException} wrapping the specified exception. 064 * 065 * @param e the Exception to wrap. 066 */ 067 public ParseException(final Throwable e) { 068 super(e); 069 } 070}