gpt4 book ai didi

Java 适本地处理异常

转载 作者:搜寻专家 更新时间:2023-11-01 01:43:17 25 4
gpt4 key购买 nike

不太熟悉 JAVA 或异常处理。寻找一些关于什么是可以接受的和什么是不受欢迎的建议。

场景,我正在构建一个生命游戏程序,我设置了条件来检查单元格是否越界并且不尝试访问该“单元格”。我的问题是,使用 try catch block 而不是 8 个条件是否可以接受,并且如果抛出 arrayOutOfBounds 异常则什么都不做。即忽略越界的单元格,或者这是不好的做法?例如……

try{
neighbors += cellIsAlive(row, col);
}catch(ArrayIndexOutofBoundsException e)
{
//dont do anything and continue counting neighbors
}

在这种情况下,cellIsAlive 方法检查多维数组中的一个位置,如果它处于 Activity 状态则返回 1,否则返回 0 并抛出 ArrayIndexOutofBoundsException。

以这种方式使用异常是好主意还是坏习惯?

提前感谢您的任何意见。

最佳答案

这绝对是一种不好的做法。异常处理会消耗大量资源,应仅(顾名思义)用于异常情况。

看看本书的第 9 章(如果可以的话,也阅读其余部分):

http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683/

您会发现您尝试做的事情与用于说明您不应该做的事情的示例非常相似,我引用:

Someday, if you are unlucky, you may stumble across a piece of code that looks something like this:

// Horrible abuse of exceptions. Don't ever do this!
try {
int i = 0;
while(true)
range[i++].climb();
} catch(ArrayIndexOutOfBoundsException e) {
}

What does this code do? It’s not at all obvious from inspection, and that’s reason enough not to use it (Item 55). It turns out to be a horribly ill-conceived idiom for looping through the elements of an array.

关于Java 适本地处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21901875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com