gpt4 book ai didi

oop - 我应该使用异常来检查构造函数中的无效参数吗?

转载 作者:行者123 更新时间:2023-12-04 05:40:59 27 4
gpt4 key购买 nike

我刚刚在 Code Complete 中读到你不应该使用异常进行流控制。我也知道常见的建议是使用异常来处理“异常情况”。但我不确定如何应用这个建议。使用异常检查构造函数中的无效参数是个好主意吗?例如,我有一个 ExcelInputConverter 将电子表格中的行转换为 Record 对象(用于操作)。构造函数将 excel 文件的名称作为输入。我应该使用异常来检查传入的字符串是否是有效的 excel 文件吗? excel文件存在吗?似乎我应该在这里使用异常,因为如果发生这种情况,该类基本上无法运行。

检查类内或类外的无效数据是否是个好主意?

Public Sub New(filename as string) 'new excel input converter
If Not (Path.GetExtension(fileName) = ".xls" Or Path.GetExtension(fileName) = ".xlsx") Then Throw New Exception("Can't make an Excel input converter from a non-Excel file like " & inputFileName)
If Not (File.Exists(fileName)) Then Throw New Exception("This file does not exist. Can't make an Excel converter")

最佳答案

如果由于构造函数的参数无效而无法构造对象,则异常是合适的。大多数语言不提供告诉对象创建者出现问题的不同方法(除了可能在对象上设置“无效”标志,我不建议这样做)。

.NET 定义了一个 ArgumentException对于这种情况。

Is it a good idea to check for invalid data within the class or outside of the class?



类(class)最能了解哪些数据对其有效。如果该类随着时间的推移而演变并且有效数据的规则发生了变化,则您不希望必须更改使用该类的所有代码来反射(reflect)该变化。

关于oop - 我应该使用异常来检查构造函数中的无效参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11250885/

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