Instance Method インスタンスメソッド

exceptionDuringOperation(_:error:leftOperand:rightOperand:)

Specifies what an NSDecimalNumber object will do when it encounters an error. あるNSDecimalNumberオブジェクトが、それがエラーに遭遇する時に何をすることになるかを指定します。

Declaration 宣言

func exceptionDuringOperation(_ operation: Selector, 
                        error: NSDecimalNumber.CalculationError, 
                  leftOperand: NSDecimalNumber, 
                 rightOperand: NSDecimalNumber?) -> NSDecimalNumber?

Parameters パラメータ

method

The method that was being executed when the error occurred. エラーが発生した時に実行されていたメソッド。

error

The type of error that was generated. 生成されたエラーの型。

leftOperand

The left operand. 左の演算数。

rightOperand

The right operand. 右の演算数。

Discussion 議論

There are four possible values for error, described in NSDecimalNumber.CalculationError. The first three have to do with limits on the ability of NSDecimalNumber to represent decimal numbers. An NSDecimalNumber object can represent any number that can be expressed as mantissa x 10^exponent, where mantissa is a decimal integer up to 38 digits long, and exponent is between –256 and 256. The fourth results from the caller trying to divide by 0. 4つの可能な値がerrorに対してあり、NSDecimalNumber.CalculationErrorにおいて記述されます。最初の3つは、10進数を表すNSDecimalNumberの能力に関する制限と関係があります。NSDecimalNumberオブジェクトは仮数 x 10^指数のように表現できるあらゆる数を表せます、ここで仮数は38桁長までの10進整数です、そして指数は–256と256の間です。4番目は、呼出し側が0で除算しようとする結果です。

In implementing exceptionDuringOperation(_:error:leftOperand:rightOperand:), you can handle each of these errors in several ways: exceptionDuringOperation(_:error:leftOperand:rightOperand:)を実装する中で、あなたはこれらのエラーそれぞれを別々の方法で処理できます。

  • Raise an exception. For an explanation of exceptions, see Exception Programming Topics. ある例外を引き起こす。例外それらの説明として、Exception Programming Topicsを見てください。

  • Return nil. The calling method will return its value as though no error had occurred. If error is NSCalculationLossOfPrecision, method will return an imprecise value—that is, one constrained to 38 significant digits. If error is NSCalculationUnderflow or NSCalculationOverflow, method will return NSDecimalNumber's notANumber. You shouldn’t return nil if error is NSDivideByZero. nilを返す。メソッド呼び出しは、その値をまるでエラーが起こらなかったかのように返すでしょう。errorNSCalculationLossOfPrecisionであるならば、methodは不正確な値を返すでしょう — すなわち、有効桁数38に制約されたもの。errorNSCalculationUnderflowまたはNSCalculationOverflowであるならば、methodNSDecimalNumberの持つnotANumberを返すでしょう。あなたはnilを返すべきではありません、もしerrorNSDivideByZeroであるならば。

  • Correct the error and return a valid NSDecimalNumber object. The calling method will use this as its own return value. エラーを訂正して、有効なNSDecimalNumberオブジェクトを返す。メソッド呼び出しは、これをそれ自身の戻り値として使うでしょう。