Java 将文件数据传递到函数中

Java 将文件数据传递到函数中,java,file,snmp,Java,File,Snmp,您好,我一直在尝试将文件中的ipAddresses传递给将执行GET操作的SNMP函数。我正在逐行读取文件并传递数据。但是我在setAddress处遇到一个错误,如果我不从文件中传递,程序可以正常工作。请参见代码第1行中已注释的ipAddress 代码: 从错误消息看,文件中似乎有空格。当您直接传递IP地址时,没有空格,因此它可以工作。您需要先删除空格,然后再使用它 换行 Discover1.getDevice(strLine); 删除前导空格和尾随空格。比如: 选项1: Discover1.

您好,我一直在尝试将文件中的
ipAddresses
传递给将执行GET操作的SNMP函数。我正在逐行读取文件并传递数据。但是我在
setAddress
处遇到一个错误,如果我不从文件中传递,程序可以正常工作。请参见代码第1行中已注释的ipAddress

代码:


从错误消息看,文件中似乎有空格。当您直接传递IP地址时,没有空格,因此它可以工作。您需要先删除空格,然后再使用它

换行

Discover1.getDevice(strLine);
删除前导空格和尾随空格。比如:

选项1:

Discover1.getDevice(strLine.trim());
Discover1.getDevice(StringUtils.trim(strLine));
选项2:

Discover1.getDevice(strLine.trim());
Discover1.getDevice(StringUtils.trim(strLine));

参考资料:

所以这可能不是一个确切的答案,但它不适合评论

这很糟糕:

catch(异常e){….}

仅当其他方法
引发异常时才执行此操作。还有,如果可以的话,打那个人

您自己的方法不应
methodName()引发异常
。它应该特别地
methodName()抛出IOException

您应该执行
catch(IOException e){…}catch(IllegalArgumentException e){…}
等操作

正如您所看到的,如果您不知道引发了什么样的异常,则很难进行故障排除

最后,在请求异常帮助时,通常应包括堆栈跟踪。例如:

线程“main”java.lang.NullPointerException中的异常
在com.example.myproject.Book.getTitle(Book.java:16)
在com.example.myproject.Author.getBookTitles(Author.java:25)
位于com.example.myproject.Bootstrap.main(Bootstrap.java:14)


此信息有助于调试

问题是你的捕获条款。不要捕获所有异常。实际上,看看你的方法可以抛出哪些异常,并捕获那些特定的异常。然后,当抛出一个时,看到wtf正在发生就不那么令人沮丧了;但还是有同样的错误,我看不出来。您的主方法仍然有一个try-catch块来捕获所有异常,并且您的方法仍然抛出异常。除非你解决了这个问题,否则你无法判断问题出在哪里。另外,我假设抛出的异常中有一个堆栈跟踪,该信息会有所帮助。getting java.lang.IllegalArgumentException:192.168.1.4/8001在调用传递的函数时
strLine
。尝试传递StringUtils.trim(strLine)
(删除空格)应该避免抛出异常(或可抛出的)。但是,如果您记录一个异常(即使使用e.toString()),您也会得到特定类型的异常。我的意思不是说他应该亲自抛出异常,而是说他的方法不应该声明它抛出异常,因为这会迫使任何使用它的人捕获泛型异常。编辑以使其更清晰。