Scala throw关键字
Scala中的throw关键字用于从方法或任何代码块中明确地抛出一个异常。在Scala中,throw关键字用于明确地抛出异常并捕获它。它也可以用来抛出自定义的异常。java和scala中的异常处理是非常相似的。除了scala将所有类型的异常都视为运行时异常,因此它不强迫我们处理它们,而是在catch块中使用模式匹配。如果结果不会被评估为任何东西,我们可以用它来代替任何其他表达式。
重要的事情要记住
- Throw表达式的返回类型为Nothing。
- Throw是用来抛出异常的关键字,而throws是用来声明异常的关键字。
- Catch块使用模式匹配来处理异常
语法
throw exception object
Example:
throw new ArithmeticException("divide by 0")
例子
val x = if (n % 10 == 0) 5 else throw new RuntimeException(“n must be a multiple of 10”)
解释: 如果n是10的倍数,那么5将被分配给x,但是如果n不是10的倍数,那么在x被初始化为任何东西之前就会抛出一个异常。正因为如此,我们可以说throw有一个任何类型的值。在scala中,抛出异常和Java是一样的。我们创建一个异常对象,然后用throw关键字来抛出它。
例子
// Scala program of throw keyword
// Creating object
object Main
{
// Define function
def validate(article:Int)=
{
// Using throw keyword
if(article < 20)
throw new ArithmeticException("You are not eligible for internship")
else println("You are eligible for internship")
}
// Main method
def main(args: Array[String])
{
validate(22)
}
}
输出
You are eligible for internship
在上面的代码中,如果我们的文章少于20,我们就没有输出。当一个错误发生时,scala方法可以抛出一个异常,而不是正常返回。在下面的例子中,我们看到一个函数抛出了一个异常。
// Scala program of throw keyword
// Creating object
object GFG
{
// Main method
def main(args: Array[String])
{
try
{
func();
}
catch
{
case ex: Exception => println("Exception caught in main: " + ex);
}
}
// Defining function
def func()
{
// Using throw exception
throw new Exception("Exception thrown from func");
}
}
输出
Exception caught in main: java.lang.Exception: Exception thrown from func