Spotify 谜题:避免异常处理错误
Posted
技术标签:
【中文标题】Spotify 谜题:避免异常处理错误【英文标题】:Spotify puzzle: avoiding exception handling error 【发布时间】:2013-01-13 19:22:06 【问题描述】:我正在制作一个 Spotify 拼图(可查看 here)。我正在用 Java 编写解决方案,并且我的代码在 Eclipse、ideone.com 和我的 osx 上的终端中传递了他们的两个示例输入,所有这些都没有错误。但是,每当我提交给 Spotify 机器人时,我都会得到以下极简响应:
我们已经测试了您的解决方案,但不幸的是,我们这样做了
发现以下错误:运行时错误
没有发现异常
这基本上是我在输入中读取的内容:
scn = null;
try
scn = new Scanner(System.in);
if(scn.hasNext())
strIn = scn.nextLine();
//do work on first line of input
if(scn.hasNext())
strIn = scn.nextLine();
//do work on second line of input
//do work on the rest of the lines
while (scn.hasNext())
strIn = scn.nextLine();
if(/*reached last line*/)
break;
catch(Exception e)
System.out.println("Exception caught");
System.out.println(e.getStackTrace());
finally
if (scn != null)
scn.close();
您可以查看我的完整解决方案here。请注意,根据 Spotify 提交指南,我的实际提交声明我的班级是公开的。
由于问题只需要从标准输入到标准输出的简单 I/O,因此我似乎只需要考虑在我的 try 块中读取输入时可能引发的任何异常。我为所有异常(我知道的错误形式)提供了一个 catch 块,但不应该处理它吗?也许我忽略了一些可能在其他地方出现的异常?
这可能是因为我没有考虑 Spotify 机器人如何解析输入的一些小特殊性,但它们的响应消息和指南使得很难确定问题的确切位置。如果这个问题过于本地化,我深表歉意——其他 Spotify 难题问题都是这样看待的——但我认为我的 i/o 和异常问题足够广泛,也许人们对 Spotify 机器人如何工作有一些很好的答案。另外,我已经有一段时间没有用 Java 编写代码了,所以当然欢迎任何其他 cmets。
【问题讨论】:
我做了:“请注意,根据 Spotify 提交指南,我的实际提交声明我的班级是公开的。” 你有没有让它工作?我有同样的问题。我的代码最终可以正常工作。但不是在他们的尽头。 嘿@Sloth:是的,我做到了。它实际上最终成为了这个小问题,我花了比它应该弄清楚的时间更长的时间。我需要将变量保持轨道播放的数据类型从 int 更改为 long。 Spotify 使用的测试数据非常大,我的整数无法容纳,这就是程序不断崩溃的原因!希望这会有所帮助。 【参考方案1】:为了正式一点,引发的异常不是 I/O 异常,就像我想的那样,实际上是整数溢出异常。我需要将变量保持轨道播放的数据类型从 int 更改为 long。 Spotify 使用的测试数据一定有非常大的数字,我的整数无法容纳,这就是程序不断崩溃的原因!希望这对人们有所帮助。
【讨论】:
您是如何解决这个问题的?猜测和检查? @user1850672 一点点,和朋友、其他程序员等聊天 我遇到了与catsvsdog
程序类似的问题。我只希望我的程序至少报告“错误输出”而不是这个该死的异常。你有兴趣看看吗?
@thesquid24 嘿,我来晚了一点,但如果您还想要另一双眼睛,请随时将我引向代码以上是关于Spotify 谜题:避免异常处理错误的主要内容,如果未能解决你的问题,请参考以下文章