java 多层try_我可以一次捕获多个try语句吗? 在java中

我正在做一个带有3D阵列的项目,我需要测试一个单元周围的每个单元。 但是,如果单元格位于阵列的边缘,则在阵列外部测试单元格将引发超出范围的异常。 我想用catch语句解决此问题,但是编写一次try and catch以测试每个块将需要大量代码(3D数组中的一个单元周围有8个单元)。 有没有一种方法可以只捕获一个就可以捕获许多"尝试",然后继续从中断的地方继续呢? 例如,如果测试器方法测试了一个超出范围的单元格,那么我不仅需要捕捉它,还需要继续测试其他单元格。

我只能猜测:您的代码可能有很多不同的循环,但是每个循环的核心都很相似。只需在每个循环中使用相同的方法:

for ... x ...

do(x);

for ... x ...

do(x);

for ... x ...

do(x);

// ...

void do(... x)

{

try

{

// code here

}

catch ...

// ...

}

另外,请注意,您不应通过捕获异常来实现in-bounds检查。那是非常糟糕的设计。确保您的阵列访问始终是入站的。如果循环条件本身无法达到该目标(例如,由于您的数组不是统一网格),请添加其他if语句。

这就是我刚才想写的内容!!!

或者,您可以放置??一条if语句,检查您是否仍在边界内,如果是,则访问该单元格,否则不访问。

这可能对性能不利。

真正。 我只是觉得有点奇怪,无法捕捉到异常。

另一种解决方案是在需要测试的单元周围放置一层保护单元。仅测试实际单元的邻居,但边缘单元将看到保护单元,而不会出现越界异常。

我相信您将需要一个循环来测试另一个单元格周围的单元格。您可以做的是,在循环内编写一条try ... catch语句,并在其后给出继续

for (/*loop conditions*/) {

try

{

//your code here

}

catch (/*catch the IndexOutOfBoundsException here*/)

{//write any action or message you need to have here}

continue;

}

这样,您的循环将完全运行,而不管抛出任何IndexOutOfBounds异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值