diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-04-03 13:55:13 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-04-03 13:55:13 +0000 |
commit | 790202489f743796c20536daa26e77091720cd5c (patch) | |
tree | c1f09496a730e86dacde684307aeac97122667b6 /src | |
parent | 19e048471fdcdaf9b7f13a9c486ec22c2361234f (diff) |
throw exception on divide by zero
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/Num.java | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/jvm/clojure/lang/Num.java b/src/jvm/clojure/lang/Num.java index 7c5e0526..71596329 100644 --- a/src/jvm/clojure/lang/Num.java +++ b/src/jvm/clojure/lang/Num.java @@ -95,7 +95,10 @@ abstract public Num multiply(BigInteger x); abstract public Num multiply(RatioNum x); static public Num divide(Object x, Object y){ - return Num.from(x).divideBy(Num.from(y)); + Num ny = Num.from(y); + if(ny.zerop()) + throw new ArithmeticException("Divide by zero"); + return Num.from(x).divideBy(ny); } abstract public Num divideBy(Num rhs); @@ -132,6 +135,8 @@ static public Object[] truncateBigints(BigInteger n, BigInteger d){ } static public Num divide(BigInteger n, BigInteger d){ + if(d.equals(BigInteger.ZERO)) + throw new ArithmeticException("Divide by zero"); BigInteger gcd = n.gcd(d); if(gcd.equals(BigInteger.ZERO)) return Num.ZERO; |