Swift 算术重载期间的抛出错误

Swift 算术重载期间的抛出错误,swift,operator-overloading,try-catch,Swift,Operator Overloading,Try Catch,我正在实现一个支持算术运算符重载的Swift 3类。如果除数为零,我希望除法(/)操作抛出一个错误。如果发生溢出,也可以使用乘法(*)进行抛出 这就要求我将try与我的内联算法结合使用 var x = try a / b 这没关系,只是当计算使用我的类的对象时才需要try。这是一种笨拙、不一致的编码 另一种方法是在每次计算之外建立完整性检查,这是重复的,容易出现编码错误/遗漏 在Swift中,在运算符重载表达式中尝试/抛出/捕获错误的好/好/最佳做法是什么?可能是,如果出现错误,您可以返回ni

我正在实现一个支持算术运算符重载的Swift 3类。如果除数为零,我希望除法(/)操作抛出一个错误。如果发生溢出,也可以使用乘法(*)进行抛出

这就要求我将try与我的内联算法结合使用

var x = try a / b
这没关系,只是当计算使用我的类的对象时才需要try。这是一种笨拙、不一致的编码

另一种方法是在每次计算之外建立完整性检查,这是重复的,容易出现编码错误/遗漏


在Swift中,在运算符重载表达式中尝试/抛出/捕获错误的好/好/最佳做法是什么?

可能是,如果出现错误,您可以返回nil,而不是抛出异常。因此,返回类型将是一个选项,以零为实验对象。这似乎不是其他操作符重载的模式,尽管我没有深入研究。此外,我认为在复合语句中语法会变得复杂。你认为nil比try/catch好吗?你是对的,我也觉得为普通操作抛出异常有点过分了。是的,可以用零误差除法。类似地,也可以使用越界索引访问数组。完全消除运行时错误对于正常编程来说可能太麻烦了,除非您确实有很多这样的问题。如果出现问题,您可能会返回nil,而不是抛出异常。因此,返回类型将是一个选项,以零为实验对象。这似乎不是其他操作符重载的模式,尽管我没有深入研究。此外,我认为在复合语句中语法会变得复杂。你认为nil比try/catch好吗?你是对的,我也觉得为普通操作抛出异常有点过分了。是的,可以用零误差除法。类似地,也可以使用越界索引访问数组。完全消除运行时错误对于正常编程来说可能太麻烦了,除非您真的有很多这样的问题