贴出一个简单的异常,分析一下原因,以及推荐一个相对好一些的替代方法。
如下,如果我们进行字符串格式化提供的值的数量少于字符串格式符(%s)的数量,就会抛出MissingFormatArgumentException异常。
错误代码
lineos:false1
2
| String format = "%s/%s";
String.format(format, "a");
|
崩溃信息
lineos:false1
2
3
4
5
6
| Exception in thread "main" java.util.MissingFormatArgumentException: Format specifier 's'
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.lang.String.format(Unknown Source)
at Concatenation.testFormat(Concatenation.java:17)
at Concatenation.main(Concatenation.java:4)
|
替代方法
相比字符串的格式化操作,使用字符串的替换更加安全,避免因为疏忽或者考虑不全等带来的崩溃问题。
lineos:false1
| String s = "%country%/%city%".replace("%country%", "China").replace("%city%", "Beijing");
|
其他