gpt4 book ai didi

java - 是否可以使用异常作为条件?

转载 作者:行者123 更新时间:2023-11-30 06:04:55 25 4
gpt4 key购买 nike

这是我的应用程序中的一些代码:

public void run() throws myException{
boolean gameOver = false;
while(!gameOver){
//do stuff, and eventually make gameOver true to end execution
...

现在的问题是,我想删除 boolean 属性以使用用户定义的异常来结束执行。我正在考虑检查是否在 while 条件下抛出了此异常,以便只要它没有被抛出就继续循环。

类似的东西

while(myException.notThrown){

这可以做到吗?

最佳答案

您的问题的答案是,但这种构造的实现取决于您的需求。

直接(且不恰当)的方式是:

public void run() {
MyException ex = null;
while(ex == null) {
try {
// Do stuff
} catch(MyException e) {
// Maybe handle this exception
ex = e;
}
}
}

但这是一种奇怪的逻辑形式,可以简化为:

public void run() {
while(true) {
try {
// Do stuff
} catch(MyException e) {
// Maybe handle this exception
break;
}
}
}

或者这个,这是我对这三个的偏好:

public void run() {
try {
while(true) {
// Do stuff
}
} catch(MyException e) {
// Maybe handle this exception
}
}

尽管有所有这些可能性,由于您的 run 签名中已经有 throws MyException ,假设您的调用者正确处理它,您可以这样做:

public void run() throws MyException {
while(true) { // Or maybe some exit condition?
try {
// Do stuff
}
}
}

这使得异常传播到调用者。然后,让调用者处理产生的异常:

try {
myObject.run();
} catch(MyException e) {
// Handle this exception
}

您想要使用的结构取决于您的逻辑流程。考虑哪个实体应该处理您的自定义异常。抛出这个异常意味着什么?谁/什么将负责处理此类案件?

关于java - 是否可以使用异常作为条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48062603/

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