Java - 编写一种方法来处理所有异常

时间:2015-06-23 15:45:32

标签: java exception

我试图处理我的代码上的异常,同时又不重复它。

我在" System"上有很多方法。上课和我宁愿不写'#34;试试Catch"在所有这些中我认为还有其他方法不重复它。

有什么想法?

我想要处理的异常是(InputMismatchException)。

编辑:更多信息,以防万一你需要它。 我有几种方法,用户需要输入' Int'(使用扫描仪),这就是我需要处理的内容。

4 个答案:

答案 0 :(得分:2)

我一般不推荐这样做:只需将所有方法抛出异常,并在一个地方处理上层的所有异常。这只适用于某些测试,或者当您想要快速开发某些东西而不应该是正常的方法时。

你可以在这里找到更多: https://docs.oracle.com/javase/tutorial/essential/exceptions/declaring.html

还有一些关于你应该如何做的规则: Throws or try+catch

答案 1 :(得分:2)

答案 2 :(得分:1)

拥有一个处理所有异常的神类是不明智的。通常每个例外都是一个独特的情况,应该单独处理。

但如果您仍然想要,可以在每个方法中添加throws声明,然后在一个起始点捕获它们。

答案 3 :(得分:1)

这是您想要尝试的另一种方法,它不会隐式处理异常。

正如您的评论中所提到的您正在通过 Scanner 类从用户获取意见。由于Scanner允许用户输入他们想要的任何值而你只想处理整数,你可能想要(或者你已经在使用){{1} } 方法。 Tutorial here.

如果您只需要在一个地方处理Scanner.nextInt()this question has an answer that handles所有异常。

或者,作为此question explores,您可以不必处理异常,只需要用户输入一个int,直到用户正确输入一个整数,修改如下:

InputMismatchException

Scanner sc = new Scanner(System.in); //your scanner instance System.out.print("Enter a number."); while (!sc.hasNextInt()) { System.out.println("Enter a whole number"); sc.next(); } int x = sc.nextInt(); 循环的作用是在扫描程序没有下一个整数时始终重复,因此while条件,并提示用户输入另一个数字使用消息和!sc.hasNextInt(),这是一种等待用户再次输入的方法。

一旦用户输入一个数字,sc.next()方法将返回一个true,这使得while循环条件为false(因为我们做了!hasNextInt())其中!给出另一个布尔值,分配的hasNextInt()将始终为x,从而避免异常处理

这很好,因为你不需要处理大量的异常和int块,并且避免像其他人提到的那样做了沮丧的方法,而且我认为这是一个简单的程序或一些任务,避免额外的复杂性。

但是,如果您需要更高级的错误处理异常肯定是您应该研究的内容,那么您就是正确的思路。