Ale*_*ber 5 java static-methods exception command-line-arguments
一个简单的测试用例来演示我的两个问题:
public class Numbers {
private static void usage() {
System.err.println("Usage: java " + getClass().getName() + " range");
System.exit(1);
}
public static void main(String[] args) throws IOException {
try {
int range = Integer.parseInt(args[0]);
} catch (Exception e) {
usage();
}
}
}
Run Code Online (Sandbox Code Playgroud)
getClass()
从静态方法调用ArrayIndexOutOfBoundsException
消息而不是usage()
输出.为什么不赶上(例外e)赶上它?对我有用,捕获异常。
从静态方法获取类名而不引用 是Numbers.class.getName()
很困难的。
但我发现了这个
String className = Thread.currentThread().getStackTrace()[2].getClassName();
System.err.println("Usage: java " + className + " range");
Run Code Online (Sandbox Code Playgroud)