// author: klaffenboeck patrick // matr.-nr: 0125335 // bsp.-nr: 4033 // datei: ReNeX.java (REsistorNEtworkeXception) // beschreibung: die exception klasse fuer die klasse ReNe // for better readability try "sed '/ \/\//d' ...." ;-) package Wider; public class ReNeX extends Exception { // die bedeutung der fehlercodes kann man leicht aus den // entsprechenden fehlermeldungen weiter unten erkennen protected static final byte MISS_LBR = 1; protected static final byte MISS_RBR = 2; protected static final byte TWO_OPS = 3; protected static final byte INV_POS = 4; protected static final byte INV_CHAR = 5; protected static final byte MIX_OP = 6; protected static final byte FIND = 7; protected static final byte NON_POS = 8; protected static final byte EPROG = 9; protected StringBuffer msg; protected StringBuffer ptr; protected boolean printPtr = true; public ReNeX( byte type, int pos ) throws ReNeX { super(); msg = new StringBuffer("ERROR #" + type + ": "); ptr = new StringBuffer(""); switch (type) { case MISS_LBR: msg.append("missing matching left " + "bracket"); break; case TWO_OPS: msg.append("two operators in sequence"); break; case INV_CHAR: msg.append("invalid character"); break; case MISS_RBR: msg.append("missing matching right " + "bracket"); break; case EPROG: msg.append("eprog-restriction: no " + "more than 15 resistors " + "allowed"); break; case MIX_OP: msg.append("different levels have to " + "be grouped by brackets"); break; case INV_POS: msg.append("invalid operator position"); break; case FIND: msg.append("Wider.ReNe.find() can " + "only search for '+' or '/'"); printPtr = false; break; case NON_POS: msg.append("all resistors musst be 1 " + "or greater"); printPtr = false; break; default: msg.append("unkown error"); printPtr = false; } for (int i = 0; i < pos; i++) ptr.append(" "); ptr.append("^"); } // end constructor( byte, int ) public ReNeX( String input ) { super(); msg = new StringBuffer("ERROR #255: unknown error in " + "expression \"" + input + "\""); printPtr = false; } // end constructor( String ) public void printMessage() { if (printPtr) System.err.println(ptr); System.err.println(msg); } // end void printMessage() } // end class ReNeX