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.bcel.verifier.exc; 019 020 021/** 022 * Instances of this class are thrown by BCEL's class file verifier "JustIce" 023 * whenever 024 * verification proves that some constraint of a class file (as stated in the 025 * Java Virtual Machine Specification, Edition 2) is violated. 026 * This is roughly equivalent to the VerifyError the JVM-internal verifiers 027 * throw. 028 * 029 */ 030public abstract class VerifierConstraintViolatedException extends RuntimeException{ 031 // /** The name of the offending class that did not pass the verifier. */ 032 // String name_of_offending_class; 033 034 private static final long serialVersionUID = 2946136970490179465L; 035 /** The specified error message. */ 036 private String detailMessage; 037 /** 038 * Constructs a new VerifierConstraintViolatedException with null as its error message string. 039 */ 040 VerifierConstraintViolatedException() { 041 super(); 042 } 043 /** 044 * Constructs a new VerifierConstraintViolatedException with the specified error message. 045 */ 046 VerifierConstraintViolatedException(final String message) { 047 super(message); // Not that important 048 detailMessage = message; 049 } 050 /** 051 * Constructs a new VerifierConstraintViolationException with the specified error message and cause 052 */ 053 VerifierConstraintViolatedException(final String message, final Throwable initCause) { 054 super(message, initCause); 055 detailMessage = message; 056 } 057 058 059 /** Extends the error message with a string before ("pre") and after ("post") the 060 'old' error message. All of these three strings are allowed to be null, and null 061 is always replaced by the empty string (""). In particular, after invoking this 062 method, the error message of this object can no longer be null. 063 */ 064 public void extendMessage(String pre, String post) { 065 if (pre == null) { 066 pre=""; 067 } 068 if (detailMessage == null) { 069 detailMessage=""; 070 } 071 if (post == null) { 072 post=""; 073 } 074 detailMessage = pre+detailMessage+post; 075 } 076 /** 077 * Returns the error message string of this VerifierConstraintViolatedException object. 078 * @return the error message string of this VerifierConstraintViolatedException. 079 */ 080 @Override 081 public String getMessage() { 082 return detailMessage; 083 } 084}