找不到Java try / catch args [0]

时间:2017-02-15 07:30:22

标签: java exception

在找不到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)

有人可以告诉我如何找到正确的错误来抓住吗?

2 个答案:

答案 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