MST

星途 面试题库

面试题:自定义迭代器中的错误处理策略

假设你正在创建一个自定义迭代器,在迭代过程中可能由于数据格式错误、资源不足等不同原因抛出错误。请阐述你会如何设计错误处理策略,使调用者能够清晰区分不同类型的错误并进行针对性处理,同时给出相关代码示例。
19.4万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

设计错误处理策略思路

  1. 自定义错误类型:为不同的错误场景定义不同的自定义错误类型,这样调用者可以通过捕获特定的错误类型来区分不同错误。
  2. 清晰的错误信息:在抛出错误时,提供详细的错误信息,帮助调用者理解错误原因。

代码示例

# 自定义数据格式错误
class DataFormatError(Exception):
    pass

# 自定义资源不足错误
class ResourceInsufficientError(Exception):
    pass

class CustomIterator:
    def __init__(self, data):
        self.data = data
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.index >= len(self.data):
            raise StopIteration
        try:
            # 模拟数据格式检查,这里假设数据应该是整数
            value = int(self.data[self.index])
        except ValueError:
            raise DataFormatError(f"数据格式错误: {self.data[self.index]} 不是有效的整数")
        # 模拟资源不足检查,这里假设值大于10会导致资源不足
        if value > 10:
            raise ResourceInsufficientError(f"资源不足: 值 {value} 大于10")
        self.index += 1
        return value


# 使用自定义迭代器并处理错误
data = ["1", "2", "a", "12"]
try:
    it = CustomIterator(data)
    for num in it:
        print(num)
except DataFormatError as e:
    print(f"捕获到数据格式错误: {e}")
except ResourceInsufficientError as e:
    print(f"捕获到资源不足错误: {e}")

上述代码定义了 DataFormatErrorResourceInsufficientError 两个自定义错误类型。在 CustomIterator__next__ 方法中,根据不同的错误场景抛出对应的错误。调用者通过 try - except 语句捕获并处理这些不同类型的错误。