繁体   English   中英

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

[英]Java - Write one method to handle all exceptions

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

我在“系统”类上有很多方法,我不希望在所有代码中都写“尝试捕获”,因为我认为还有其他方法可以不重复。

有任何想法吗?

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

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

我通常不建议这样做:只需使所有方法抛出异常并将所有异常放在一个位置上即可。 这仅对某些测试有用,或者当您想快速开发某些东西时,这不应该是正常的方法。

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

还有一些有关如何操作的规则: 投掷或try + catch

拥有一个处理所有异常的上帝类不是一个好主意。 通常,每个异常都是一个独特的情况,应单独处理。

但是,如果您仍然愿意,可以在每个方法中添加throws声明,然后在一个起点上全部捕获它们。

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

如您的评论中所述,您正在通过Scanner从用户那里获取输入 由于Scanner允许用户键入他们想要的任何值 ,并且您只想处理Integer,因此您可能想要(或已经在使用) Scanner.nextInt()方法。 教程在这里。

如果您只需要处理InputMismatchException ,则此问题的答案可以在一处处理所有异常。

另外,正如这个问题所探讨的那样您可以通过总是向用户询问一个int直到用户正确输入一个整数(在下面进行了修改) 来消除不得不处理Exceptions的麻烦:

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()这是一种等待用户再次输入的方法。

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

这样做很好,因为您不必处理大量的异常和try-catch块,并且不必像其他人提到的那样去使用沮丧的方法,我想这是用于简单的程序或某些赋值的,避免额外的复杂性。

但是,如果您需要更高级的错误处理异常,那么绝对应该研究异常,因此您处于正确的思路。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM