1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
/* The Computer Language Shootout
http://shootout.alioth.debian.org/
contributed by Isaac Gouy (Scala novice)
*/
object except {
var Lo = 0;
var Hi = 0;
def main(args: Array[String]) = {
val n = toPositiveInt(args);
for (val i <- Iterator.range(0,n))
someFunction(i);
Console print("Exceptions: HI=" + Hi);
Console println(" / LO=" + Lo);
}
def blowup(n: Int) = {
if ((n % 2) == 0)
throw new LoException();
else
throw new HiException(); }
def loFunction(n: Int) = {
try { blowup(n); }
catch { case _: LoException => Lo = Lo + 1; }
}
def hiFunction(n: Int) = {
try { loFunction(n); }
catch { case _: HiException => Hi = Hi + 1; }
}
def someFunction(n: Int) = {
try { hiFunction(n); }
catch { case e: Exception =>
Console println("We shouldn't get here: " + e);
}
}
def toPositiveInt(s: Array[String]) = {
val i =
try { Integer.parseInt(s(0)); }
catch { case _ => 1 }
if (i>0) i; else 1;
}
}
private class LoException extends Exception {}
private class HiException extends Exception {}
|