didi/DoKit · error · IllegalArgumentException
input must be shorter than or equal to the number of spaces:
Error message
input must be shorter than or equal to the number of spaces: " + size
What it means
Thrown by DoKit's StringUtil.padLeft(input, size) when the input string is longer than the target padded length. padLeft prepends spaces until the string reaches exactly `size` characters; if the input already exceeds that length there is no valid way to pad it, so the method rejects the call with IllegalArgumentException.
Source
Thrown at Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/loginfo/util/StringUtil.java:23
import java.util.ArrayList;
import java.util.List;
/**
* @author nolan
*/
public class StringUtil {
/**
* Pad the specified number of spaces to the input string to make it that length
*
* @param input
* @param size
* @return
*/
public static String padLeft(String input, int size) {
if (input.length() > size) {
throw new IllegalArgumentException("input must be shorter than or equal to the number of spaces: " + size);
}
StringBuilder sb = new StringBuilder();
for (int i = input.length(); i < size; i++) {
sb.append(" ");
}
return sb.append(input).toString();
}
/**
* same as the String.split(), except it doesn't use regexes, so it's faster.
*
* @param str - the string to split up
* @param delimiter the delimiter
* @return the split string
*/
public static String[] split(String str, String delimiter) {
List<String> result = new ArrayList<>();View on GitHub (pinned to 626827cddb)
Solutions
- Truncate or verify the input before calling: if (input.length() > size) input = input.substring(0, size);
- Reconsider whether a hard fail is desired — for display purposes a truncate-and-warn policy is usually friendlier than an exception
- Pass a size that is always >= the maximum possible input length
Example fix
// before String s = StringUtil.padLeft(longUrl, 8); // throws if longUrl > 8 chars // after String s = longUrl.length() > 8 ? longUrl.substring(0, 8) : StringUtil.padLeft(longUrl, 8);
Defensive patterns
Strategy: validation
Validate before calling
if (input != null && input.length() <= size) { String s = StringUtil.padLeft(input, size); } else { /* truncate or reject */ } Prevention
- Pre-check input.length() <= size before every padLeft call
- Prefer String.format("%" + size + "s", input) patterns that don't throw on overflow when truncation is acceptable
When it happens
Trigger: Calling StringUtil.padLeft("hello", 3) or any variant where input.length() > size, e.g. while formatting log/network trace columns in the loginfo kit with a string longer than the configured column width.
Common situations: Fixed-width formatting of dynamic content (URLs, headers, tag strings) where the developer assumed the input would fit; column width configured smaller than the longest expected value.
Related errors
- maxStoredHeapDumps must be at least 1
- precision shouldn't be less than zero!
- byteSize shouldn't be less than zero!
- invalid shadow size
- Expected alternating header names and values
AI-assisted analysis of didi/DoKit@626827cddb (2026-08-14).
Data as JSON: /api/errors/5de2eb8db8b22c8b.
Report an issue: GitHub.