Scala 编译警告和失败。警告:这会捕获所有 Throwables

jas*_*son 1 scala

这是一个用于检查素数的简单 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
 }

}
Run Code Online (Sandbox Code Playgroud)

rad*_*scu 5

Throwable在 Java 中捕捉是危险的,在 Scala 中更是如此。相反,使用这个:

catch { case scala.util.control.NonFatal(e) => // do something }

http://www.tzavellas.com/techblog/2010/09/20/catch-throwable-in-scala/