|
What this is
Other links
The source code
// $Header: /home/cvs/jakarta-jmeter/src/htmlparser/org/htmlparser/util/ChainedException.java,v 1.2 2004/02/11 02:16:58 woolfel Exp $
/*
* ====================================================================
* Copyright 2002-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
// The developers of JMeter and Apache are greatful to the developers
// of HTMLParser for giving Apache Software Foundation a non-exclusive
// license. The performance benefits of HTMLParser are clear and the
// users of JMeter will benefit from the hard work the HTMLParser
// team. For detailed information about HTMLParser, the project is
// hosted on sourceforge at http://htmlparser.sourceforge.net/.
//
// HTMLParser was originally created by Somik Raha in 2000. Since then
// a healthy community of users has formed and helped refine the
// design so that it is able to tackle the difficult task of parsing
// dirty HTML. Derrick Oswald is the current lead developer and was kind
// enough to assist JMeter.
//
// This class was contributed by
// Claude Duguay
//
package org.htmlparser.util;
/**
* Support for chained exceptions in code that predates Java 1.4.
* A chained exception can use a Throwable argument to reference
* a lower level exception. The chained exception provides a
* stack trace that includes the message and any throwable
* exception included as an argument in the chain.
*
* For example:
*
* ApplicationException: Application problem encountered;
* ProcessException: Unable to process document;
* java.io.IOException: Unable to open 'filename.ext'
* at ChainedExceptionTest.openFile(ChainedExceptionTest.java:19)
* at ChainedExceptionTest.processFile(ChainedExceptionTest.java:27)
* at ChainedExceptionTest.application(ChainedExceptionTest.java:40)
* at ChainedExceptionTest.main(ChainedExceptionTest.java:52)
*
* Represents the output from two nested exceptions. The outside
* exception is a subclass of ChainedException called
* ApplicationException, which includes a throwable reference.
* The throwable reference is also a subclass of ChainedException,
* called ProcessException, which in turn includes a reference to
* a standard IOException. In each case, the message is increasingly
* specific about the nature of the problem. The end user may only
* see the application exception, but debugging is greatly
* enhanced by having more details in the stack trace.
*
* @author Claude Duguay
**/
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
public class ChainedException extends Exception
{
protected Throwable throwable;
public ChainedException()
{
}
public ChainedException(String message)
{
super(message);
}
public ChainedException(Throwable throwable)
{
this.throwable = throwable;
}
public ChainedException(String message, Throwable throwable)
{
super(message);
this.throwable = throwable;
}
public String[] getMessageChain()
{
List list = getMessageList();
String[] chain = new String[list.size()];
for (int i = 0; i < list.size(); i++)
{
chain[i] = (String) list.get(i);
}
return chain;
}
public List getMessageList()
{
ArrayList list = new ArrayList();
list.add(getMessage());
if (throwable != null)
{
if (throwable instanceof ChainedException)
{
ChainedException chain = (ChainedException) throwable;
list.addAll(chain.getMessageList());
}
else
{
String message = throwable.getMessage();
if (message != null && !message.equals(""))
{
list.add(message);
}
}
}
return list;
}
public Throwable getThrowable()
{
return throwable;
}
public void printStackTrace()
{
printStackTrace(System.err);
}
public void printStackTrace(PrintStream out)
{
synchronized (out)
{
if (throwable != null)
{
out.println(getClass().getName() + ": " + getMessage() + ";");
throwable.printStackTrace(out);
}
else
{
super.printStackTrace(out);
}
}
}
public void printStackTrace(PrintWriter out)
{
synchronized (out)
{
if (throwable != null)
{
out.println(getClass().getName() + ": " + getMessage() + ";");
throwable.printStackTrace(out);
}
else
{
super.printStackTrace(out);
}
}
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.