在找不到args [0]时尝试找到正确的错误。
class Main
{
public static void main(String[] args)
{
try
{
String filename = args[0];
}
catch (ExceptionInThread e)
{
System.out.println(“No file found”);
}
}
}
我一直得到samme错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: o at Main.main(Main.java:9)
有人可以告诉我如何找到正确的错误来抓住吗?
答案 0 :(得分:0)
因为数组不包含任何元素所以当你试图获得args[0]
实际上根本不存在时,所以如果你想得到值,你应该检查它是否为空:
//if your array is not empty you can get values
if(args.length > 0){
String filename = args[0];
}else{
System.out.println("No file found");
}
注意强>
你不能将两个“”
用于String,你应该使用""
所以改变你的
System.out.println(“No file found”);
致:
System.out.println("No file found");
答案 1 :(得分:0)
由于所有异常都继承自Exception
,所以这就是全部:
public static void main(String[] args){
try {
String filename = args[0];
} catch (Exception e) {
System.out.println("No file found");
}
}
但这通常是糟糕的做法,因为你抓住了所有类型的错误 - 不要这样做。
回答您的问题:您在错误消息Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
中找到了异常名称/类型,其中ArrayIndexOutOfBoundsException是要捕获的异常:
catch (ArrayIndexOutOfBoundsException e)
你所做的是捕获错误的异常,以及为什么没有捕获错误。 在你的情况下,这也不是最干净的方式。
我眼中最好的方法是在尝试访问之前检查args
数组:
ìf args.length > 0
如果您要打印错误,可以使用System.err.println("No file found");
代替System.out