@Override
	public void printException(Throwable t) {
		if(t == null) return; //If the Throwable is null, ignore it
		int indent = 1;
		
		//Print exceptions only if DebugMode is on or if the Throwable is an instance of a RuntimeException
		if(this.isDebugModeEnabled() || (t instanceof RuntimeException)) {
			this.exception(t.getClass().getName(), indent);
			this.exception("Message: '"+t.getLocalizedMessage()+"'", indent);
			System.err.println(this.indentString("Stack Trace:", indent));
			indent++;
			
			StackTraceElement[] stack = t.getStackTrace();
			if(stack == null || stack.length == 0) {
				//Return if there were no StackTraceElements (or if it was null)
				System.err.println(this.indentString("(No StackTraceElements Available)", indent));
				return;
			}
			indent++;
			
			for(StackTraceElement line : stack) {
				if(line != null) System.err.println(this.indentString(line.toString(), indent));
			}
		}
	}