diff options
author | Jack Lloyd <[email protected]> | 2018-11-17 16:23:51 -0500 |
---|---|---|
committer | Jack Lloyd <[email protected]> | 2018-11-23 11:15:25 -0500 |
commit | b909778857b3e0b7eb86ac26c818e5f25baaddbd (patch) | |
tree | f8a5c9cbec26310bbfc9077563892b04db158a48 /src/lib/math | |
parent | c20a428ca2f7c1ef96e642f55bb898010444c499 (diff) |
Make exceptions easier to translate to error codes
Avoid throwing base Botan::Exception type, as it is difficult to
determine what the error is in that case.
Add Exception::error_code and Exception::error_type which allows
(for error code) more information about the error and (for error type)
allows knowing the error type without requiring a sequence of catches.
See GH #1742
Diffstat (limited to 'src/lib/math')
-rw-r--r-- | src/lib/math/bigint/big_io.cpp | 2 | ||||
-rw-r--r-- | src/lib/math/bigint/bigint.h | 7 | ||||
-rw-r--r-- | src/lib/math/numbertheory/numthry.cpp | 2 |
3 files changed, 7 insertions, 4 deletions
diff --git a/src/lib/math/bigint/big_io.cpp b/src/lib/math/bigint/big_io.cpp index 803e1cc4a..90c2253e9 100644 --- a/src/lib/math/bigint/big_io.cpp +++ b/src/lib/math/bigint/big_io.cpp @@ -20,7 +20,7 @@ std::ostream& operator<<(std::ostream& stream, const BigInt& n) if(stream.flags() & std::ios::hex) base = BigInt::Hexadecimal; else if(stream.flags() & std::ios::oct) - throw Exception("Octal output of BigInt not supported"); + throw Invalid_Argument("Octal output of BigInt not supported"); if(n == 0) stream.write("0", 1); diff --git a/src/lib/math/bigint/bigint.h b/src/lib/math/bigint/bigint.h index bd63425fd..64e408798 100644 --- a/src/lib/math/bigint/bigint.h +++ b/src/lib/math/bigint/bigint.h @@ -37,11 +37,14 @@ class BOTAN_PUBLIC_API(2,0) BigInt final /** * DivideByZero Exception + * + * In a future release this exception will be removed and its usage + * replaced by Invalid_Argument */ - class BOTAN_PUBLIC_API(2,0) DivideByZero final : public Exception + class BOTAN_PUBLIC_API(2,0) DivideByZero final : public Invalid_Argument { public: - DivideByZero() : Exception("BigInt divide by zero") {} + DivideByZero() : Invalid_Argument("BigInt divide by zero") {} }; /** diff --git a/src/lib/math/numbertheory/numthry.cpp b/src/lib/math/numbertheory/numthry.cpp index bb86f5ce0..a8dfe8eaf 100644 --- a/src/lib/math/numbertheory/numthry.cpp +++ b/src/lib/math/numbertheory/numthry.cpp @@ -351,7 +351,7 @@ BigInt inverse_euclid(const BigInt& n, const BigInt& mod) word monty_inverse(word input) { if(input == 0) - throw Exception("monty_inverse: divide by zero"); + throw Invalid_Argument("monty_inverse: divide by zero"); word b = input; word x2 = 1, x1 = 0, y2 = 0, y1 = 1; |