1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.commons.math4.legacy.exception; 18 19 import org.apache.commons.math4.legacy.exception.util.ExceptionContext; 20 import org.apache.commons.math4.legacy.exception.util.ExceptionContextProvider; 21 import org.apache.commons.math4.legacy.exception.util.Localizable; 22 23 /** 24 * As of release 4.0, all exceptions thrown by the Commons Math code (except 25 * {@link NullArgumentException}) inherit from this class. 26 * In most cases, this class should not be instantiated directly: it should 27 * serve as a base class for implementing exception classes that describe a 28 * specific "problem". 29 * 30 * @since 3.1 31 */ 32 public class MathRuntimeException extends RuntimeException 33 implements ExceptionContextProvider { 34 /** Serializable version Id. */ 35 private static final long serialVersionUID = 20120926L; 36 /** Context. */ 37 private final ExceptionContext context; 38 39 /** 40 * @param pattern Message pattern explaining the cause of the error. 41 * @param args Arguments. 42 */ 43 public MathRuntimeException(Localizable pattern, 44 Object... args) { 45 context = new ExceptionContext(this); 46 context.addMessage(pattern, args); 47 } 48 49 /** 50 * @param cause Root cause. 51 * @param pattern Message pattern explaining the cause of the error. 52 * @param args Arguments. 53 * @since 4.0 54 */ 55 public MathRuntimeException(Throwable cause, 56 Localizable pattern, 57 Object... args) { 58 super(cause); 59 context = new ExceptionContext(this); 60 context.addMessage(pattern, args); 61 } 62 63 /** {@inheritDoc} */ 64 @Override 65 public ExceptionContext getContext() { 66 return context; 67 } 68 69 /** {@inheritDoc} */ 70 @Override 71 public String getMessage() { 72 return context.getMessage(); 73 } 74 75 /** {@inheritDoc} */ 76 @Override 77 public String getLocalizedMessage() { 78 return context.getLocalizedMessage(); 79 } 80 }