try {
int result = dividend / divisor;
} catch (Exception e) {
Log.d("exception:" + e);
}或者我们可以这样写。
if (divisor != 0) {
int result = dividend / divisor;
} public int divide(int dividend, int divisor) throws ArithmeticException {
if (divisor == 0) {
throw new ArithmeticException("divide by zero");
}
return dividend / divisor;
}在调用者中,
try {
int result = divide(dividend, divisor);
} catch (Exception e) {
Log.d("exception:" + e);
}或
if (divisor != 0) {
int result = divide(dividend, divisor);
} 不管性能如何,两者似乎都没有问题。难到不是么?
发布于 2018-05-30 14:47:43
如果可以,一定要使用条件句!
抛出和捕获异常非常慢,比检查某个数字是否等于0慢得多。ArrayIndexOutOfBoundsException (检查索引是否大于0且小于数组的长度)、NullPointerException (检查对象是否为空)、NumberFormatException (在调用Integer.parseInt之类的东西之前检查字符串的格式是否正确)也是如此。
错误处理不是针对流控制的。当您使用try...catch时,您正在处理一些您确实无法控制的事情。许多方法都检查了异常,这些都是您应该捕获的异常。
发布于 2018-05-30 14:46:46
如果你只有一个if条件,那么if (divisor != 0)是合理的,但是想象一下多个分区,它们的值可能在运行时改变,那么这么多的if-else是令人头疼的,而exception(可能是您的习惯)是更好的方法。
希望这能有所帮助。
发布于 2018-05-30 14:48:26
在处理数学计算时,第二个代码块更好。
https://stackoverflow.com/questions/50597912
复制相似问题