面试题答案
一键面试设计错误处理策略思路
- 自定义错误类型:为不同的错误场景定义不同的自定义错误类型,这样调用者可以通过捕获特定的错误类型来区分不同错误。
- 清晰的错误信息:在抛出错误时,提供详细的错误信息,帮助调用者理解错误原因。
代码示例
# 自定义数据格式错误
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}")
上述代码定义了 DataFormatError
和 ResourceInsufficientError
两个自定义错误类型。在 CustomIterator
的 __next__
方法中,根据不同的错误场景抛出对应的错误。调用者通过 try - except
语句捕获并处理这些不同类型的错误。