001 // Copyright (c) 2001 Hursh Jain (http://www.mollypages.org) 002 // The Molly framework is freely distributable under the terms of an 003 // MIT-style license. For details, see the molly pages web site at: 004 // http://www.mollypages.org/. Use, modify, have fun ! 005 006 package fc.util; 007 008 import java.util.*; 009 010 /** 011 Handles argument {@link Checker} errors by printing the thread, time and stack trace 012 to <tt>System.err</tt>. <tt>System.err</tt> is chosen because the 013 default assertion mechanism also writes a message to that location. 014 After writing the message to <tt>System.err</tt>, a new 015 <tt>IllegalArgumentException</tt> is thrown. 016 017 @author hursh jain 018 @version 1.0 019 @date 5/30/2002 020 **/ 021 public class BasicArgcheckFailHandler implements IArgcheckFailHandler 022 { 023 long id = 0; 024 025 public void handle(String msg) { 026 long myid = 0; 027 synchronized (this){ 028 myid = id++; 029 } 030 String argcheckmsg = "Argcheck error [#" + myid + "] " + ((msg!=null)?msg:""); 031 System.err.println(argcheckmsg + ": " + new Date() + " " + Thread.currentThread()); 032 new Exception("=== stack trace, " + argcheckmsg + "===").printStackTrace(System.err); 033 throw new IllegalArgumentException(argcheckmsg); 034 } 035 }