这是一个用于检查素数的简单scala代码。 当我在命令提示符下编译时,我收到以下警告。我以为我会少关心警告。但它没有创建.class文件。 有人可以分享这个警告的含义吗?
警告:这会抓住所有Throwables。如果确实如此,请使用case _ : Throwable
清除此警告。
object PrimeNumber extends App {
println("11 is prime number : " + checkPrimeNumber(11))
println("111 is prime number : " + checkPrimeNumber(111))
//Method for checking prime numbers between 1 and 100
def checkPrimeNumber(num: Int) = {
try {
if (num < 1 || num > 100)
throw new IllegalArgumentException("Number should be between 1 and 100")
else
isPrimeNumber(num)
} catch {
case e: IllegalArgumentException => e.printStackTrace()
case _ => println("Exception has occurred!")
}
}
//Non Functional Method for finding prime number
def isPrimeNumber(number: Int): Boolean = {
var i = 2
while (i <= number / 2) {
if (number % i == 0) {
return false
}
i += 1
}
true
}
}
答案 0 :(得分:4)
在Java中捕获Throwable
是危险的,在Scala中捕获更多。
相反,使用这个:
catch { case scala.util.control.NonFatal(e) => // do something }
请参阅http://www.tzavellas.com/techblog/2010/09/20/catching-throwable-in-scala/