Scala异常| Scala方法如何引发异常?

Scala异常

在程序执行期间发生编程异常,在程序执行期间发生错误。该错误中断了代码的执行顺序。通过将代码绕过异常处理程序来处理异常。这样可以处理异常并减少错误的发生。

Scala中的异常处理与任何其他编程语言的异常具有相同的工作方式,但实现方式略有不同。Scala仅支持未检查的异常,即,Scala没有内置检查的异常。

异常是从throwable继承的,后者还具有错误的子类。并且异常具有一个称为未检查异常的子类,这在编程中非常有用。

Scala异常处理

异常的处理方式与其他编程语言(如Java)相同,即抛出异常,然后创建一个捕获该异常的块。

Scala异常处理如何工作?

假设您的Scala代码中发生异常。编译器将保留执行,并将流程提供给异常处理程序,由其进行工作。并运行代码,否则,程序将终止。

Scala还使用try-catch块来处理异常。与在Java中一样,Scala也使用try块放置可能有错误的代码,然后使用catch或finally块来处理抛出的错误。

Scala中抛出异常

Scala中的throwing exceptions需要关键字throw,它创建一个异常对象。

尝试抓块

Scala还使用try-catch块来处理程序执行期间可能出现的异常。

使用try-catch块进行的错误处理以下列方式工作:可能引起另一个代码的代码位于try块中。根据异常的类型,代码引发缓存日志的代码具有在异常发生时执行的异常对象。

例如,如果我们在Scala try块中放置一个除法,并且该表达式的计算结果为零除以2,则将引发需要处理的算术异常。因此,在我们的Scala catch块中,我们将定义算术异常,该异常将在发生异常时捕获,并根据异常的发生执行以下代码。

语法:

    try{
	    //code that may contain an exception. 
    }
    catch {
	    case a : typeOfException =>
		    // code to be executed
    }

示例

import java.io.IOException 
object MyClass 
{ 
	def main(args:Array[String]) 
	{   
	    var i= 3 
	    var j = 3 
		try
		{ 
			var N = 5/i - j
			println("The division is successful the value is :" + 5/(i-j))
		} 
		catch
		{ 
			case  e : ArithmeticException =>
			{ 
				println("Arithmetic exception occurred.") 
			}
		} 
       
	} 
}

输出结果

The above code has 2 two outputs based on the value of I and J

case 1 : i= j
Arithmetic exception occurred

case 2 : i !=j
The division is successful the value is -5 

Note: **the value is evaluated based on the value entered in the code

有时在编程中,有些情况是我们不知道发生异常的可能性,或者某些异常没有异常类或无法捕获的情况。在这种情况下,我们将在异常处理中使用Final关键字。的最后块是运行时即其卡扣面时运行没有已知的例外情况下,被匹配的代码中的错误处理的块。即使没有错误,finally代码也将最终显示。它将与这两种情况下运行时,尝试不抛出异常,而当他们试图抛出异常和捕捉块运行。

语法:

    try{
	    //code that may contain an exception. 
    }
    catch {
	    case a : typeOfException =>
		    // code to be executed
    } 
    finally {
	    // This block will definitely run
    }

展示catch块如何工作的示例?

import java.io.IOException 
object MyClass 
{ 
	def main(args:Array[String]) 
	{   
	    var i= 3 
	    var j = 3 
		try{ 
			var N = 5/i - j
			println("the division is successful the value is :" + 5/(i-j))
		} 
		catch{ 
			case  e : ArithmeticException =>{ 
				println("Arithmetic exception occurred.") 
			}
		} 
		finally {
		    println("The finally code that runs in all cases...")
		}
       
	} 
}

输出结果

Arithmetic exception occurred.
The finally code that runs in all cases...

代码逻辑:

上面的代码用于显示发生错误时finally语句如何运行?在这个例子中,我们有一个try块包含由零算术错误鸿沟,那么这个错误是使用Scala的处理catch块用于打印“算术异常发生”。在执行该catch块之后,将调用finally块,该将打印“在所有情况下均运行的Final代码”。在执行完最终代码之后,程序将返回其原始流程。