gpt4 book ai didi

java - 自定义未经检查的异常

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

好吧,伙计们,过去一天左右我一直在努力解决这个问题。我的家庭作业让我创建了未检查和检查的异常。我相信我得到的受检查异常基本上必须在编译之前处理(使用 try & catch 或将其扔给下一个调用它的东西。对于未经检查的异常,我不明白自定义异常是如何工作的。它们在运行时被捕获并且不会不一定需要抛出或用 try & catch 封装,但如果它们是自定义的,那么 IDE 或其他什么知道要查找什么?示例:如果用户添加了一个神奇宝贝,则应该触发我的一个自定义未检查文件,但是聚会已满,但我如何告诉 IDE 这就是需要发生的事情?我的异常文件如下所示:

public class PartyIsFullException extends RuntimeException {

public PartyIsFullException() {
super();
}

public PartyIsFullException(String message) {
super(message);
}
}

然后我想用这个方法来实现它,但不知道该怎么做。我现在意识到我不能扔它们,因为用户不会期待它们,因此不会尝试捕获它们。

public void addToParty(String name) throws PartyIsFullException {
boolean exists = false;
for (int i = 0; i < 152; i++) {
exists = (name.equals(pokedex[i]));
}
if (exists) {
throw new PokemonAlreadyExistsException();
} else {
if (partyPos < 6) {
party[partyPos] = name;
partyPos++;
} else {
throw new PartyIsFullException();
}
}
}

最佳答案

I realize now I can't throw them because the user won't be expecting them and therefore won't try to catch them.

你可以扔它们!

在实际项目中,应该清楚地记录下来。

/*
* @throws PartyIsFullException if isPartyFull() would return true
*/
public void addToParty(String name) throws PartyIsFullException {...}

通常,未经检查的异常用于方法的客户端本身避免异常情况的情况,例如:

if(theParty.isPartyFull()) {
// tell the user the party is full
// and they can't add more Pokemon
} else {
theParty.addToParty(thePokemon);
}

因此,他们不必明确捕获它,因为他们已经在处理这种情况了。

如果抛出异常并且外部没有try-catch,则会一路抛出来终止线程。 (对于只有 main 的小程序,这意味着程序崩溃。)

关于java - 自定义未经检查的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29177889/

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