diff options
author | Mark Spruiell <mes@zeroc.com> | 2005-04-22 20:45:05 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2005-04-22 20:45:05 +0000 |
commit | 961cedcf0ab57ebe80ecf81810bc7acd4d7e226c (patch) | |
tree | 78cea990cd98ac399caa3666d9051ac9fdddb3b2 /java/src/IceUtil/Assert.java | |
parent | file Assert.java was initially added on branch R2_1_branch. (diff) | |
download | ice-961cedcf0ab57ebe80ecf81810bc7acd4d7e226c.tar.bz2 ice-961cedcf0ab57ebe80ecf81810bc7acd4d7e226c.tar.xz ice-961cedcf0ab57ebe80ecf81810bc7acd4d7e226c.zip |
assertion and finalizer fixes
Diffstat (limited to 'java/src/IceUtil/Assert.java')
-rw-r--r-- | java/src/IceUtil/Assert.java | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/java/src/IceUtil/Assert.java b/java/src/IceUtil/Assert.java new file mode 100644 index 00000000000..524a87a21f6 --- /dev/null +++ b/java/src/IceUtil/Assert.java @@ -0,0 +1,54 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +package IceUtil; + +public final class Assert +{ + public static boolean + Assert(boolean b) + { + // + // The JVM ignores exceptions raised in finalizers, therefore finalizers + // that use assertions should call this method. For example: + // + // protected void finalize() throws Throwable + // { + // assert(IceUtil.Assert.Assert(condition)); + // } + // + // Notice that this method is called from within an assert statement, + // which avoids the cost of the call if assertions are disabled. + // + if(!b) + { + // + // Create a Throwable to obtain the stack trace. + // + Throwable t = new Throwable(); + StackTraceElement[] trace = t.getStackTrace(); + if(trace.length > 1) + { + // + // Skip the first frame, which represents this method. + // + System.err.println("Assertion failure:"); + for(int i = 1; i < trace.length; ++i) + { + System.err.println("\tat " + trace[i]); + } + } + else + { + System.err.println("Assertion failure (no stack trace information)"); + } + } + return true; + } +} |