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 * @version $Id: VerifierConstraintViolatedException.java 1749600 2016-06-21 20:43:38Z ggregory $ 030 */ 031public abstract class VerifierConstraintViolatedException extends RuntimeException{ 032 // /** The name of the offending class that did not pass the verifier. */ 033 // String name_of_offending_class; 034 035 private static final long serialVersionUID = 2946136970490179465L; 036 /** The specified error message. */ 037 private String detailMessage; 038 /** 039 * Constructs a new VerifierConstraintViolatedException with null as its error message string. 040 */ 041 VerifierConstraintViolatedException() { 042 super(); 043 } 044 /** 045 * Constructs a new VerifierConstraintViolatedException with the specified error message. 046 */ 047 VerifierConstraintViolatedException(final String message) { 048 super(message); // Not that important 049 detailMessage = message; 050 } 051 /** 052 * Constructs a new VerifierConstraintViolationException with the specified error message and cause 053 */ 054 VerifierConstraintViolatedException(final String message, final Throwable initCause) { 055 super(message, initCause); 056 detailMessage = message; 057 } 058 059 060 /** Extends the error message with a string before ("pre") and after ("post") the 061 'old' error message. All of these three strings are allowed to be null, and null 062 is always replaced by the empty string (""). In particular, after invoking this 063 method, the error message of this object can no longer be null. 064 */ 065 public void extendMessage(String pre, String post) { 066 if (pre == null) { 067 pre=""; 068 } 069 if (detailMessage == null) { 070 detailMessage=""; 071 } 072 if (post == null) { 073 post=""; 074 } 075 detailMessage = pre+detailMessage+post; 076 } 077 /** 078 * Returns the error message string of this VerifierConstraintViolatedException object. 079 * @return the error message string of this VerifierConstraintViolatedException. 080 */ 081 @Override 082 public String getMessage() { 083 return detailMessage; 084 } 085}