gpt4 book ai didi

java - 用户定义异常 : when do we use them? 什么是 "exceptional"情况?

转载 作者:搜寻专家 更新时间:2023-11-01 02:52:49 24 4
gpt4 key购买 nike

我确信这个问题已经在许多最佳实践书籍中得到解决,但仍然......大多数时候,我看到错误使用自定义异常的示例,因此我想知道在什么情况下使用它们比较好?

特别是,目前我正在为编译器类(class)开发类型检查器。因此,我有一个 SymbolTable 类,它与 Map 非常相似。与普通 map 的主要区别在于每个符号都有最多定义一次,因此如果我们尝试插入的键已经存在于 SymbolTable 中,则 put(String, Object) 操作应该失败。

所以问题来了:每当我们尝试插入一个键,而该键已经存在于 SymbolTable 中时,SymbolTable 应该如何表现?我们应该有一个

boolean insert(String key, Object value);

在插入失败时返回“false”的方法?或者我们应该使用具有返回值“void”并在遇到重复值时抛出异常的插入方法?

提前致谢:)

最佳答案

应该在异常情况上抛出异常。

在这种特殊情况下,例如,如果方法名为 insert(),我会将已经在列表键上视为正常情况并更新它。

此外,虽然不应该使用异常来控制代码流,但返回指示失败/成功的 boolean 值也不是更好的选择(可能有很多失败的情况,而 False 表示没有任何意义)。

底线,我会做一些事情:

// Failures can happen 
void add(key, value) throws AlreadyOnMapException

// Update if already on list
void insert(key, value);

// Make available Contains() methods to control the flow by avoiding exceptions
boolean containsKey(key);

boolean containsValue(value);

关于java - 用户定义异常 : when do we use them? 什么是 "exceptional"情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7962310/

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