Spark记录-Scala异常与处理

Scala try-catch语句

Scala提供trycatch块来处理异常。try块用于包含可疑代码。catch块用于处理try块中发生的异常。可以根据需要在程序中有任意数量的try...catch块。

Scala try catch示例1

在下面的程序中,我们将可疑代码封装在try块中。 在try块之后使用了一个catch处理程序来捕获异常。如果发生任何异常,catch处理程序将处理它,程序将不会异常终止。

class ExceptionExample{  
    def divide(a:Int, b:Int) = { try{ a/b }catch{ case e: ArithmeticException => println(e) } println("Rest of the code is executing...") } } object Demo{ def main(args:Array[String]){ var e = new ExceptionExample() e.divide(100,0) } } 
Scala

将上面代码保存到源文件:Demo.scala中,使用以下命令编译并执行代码 -

D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo.scal
java.lang.ArithmeticException: / by zero
Rest of the code is executing...
Shell

Scala Try Catch示例2

在这个例子中,catch处理程序有两种情况。 第一种情况将只处理算术类型异常。 第二种情况有Throwable类,它是异常层次结构中的超类。第二种情况可以处理任何类型的异常在程序代码中。有时当不知道异常的类型时,可以使用超类 - Throwable类。

class ExceptionExample{  
    def divide(a:Int, b:Int) = { try{ a/b var arr = Array(1,2) arr(10) }catch{ case e: ArithmeticException => println(e) case ex: Throwable =>println("found a unknown exception"+ ex) } println("Rest of the code is executing...") } } object Demo{ def main(args:Array[String]){ var e = new ExceptionExample() e.divide(100,10) } } 
Scala

将上面代码保存到源文件:Demo.scala中,使用以下命令编译并执行代码 -

D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo.scal
found a unknown exceptionjava.lang.ArrayIndexOutOfBoundsException: 10
Rest of the code is executing...

Scala finally块

inally块用于在异常时释放资源。资源可能是文件,网络连接,数据库连接等,finally块执行代码运行保证。以下程序说明了finally块的用法。

Scala finally块示例

class ExceptionExample{  
    def divide(a:Int, b:Int) = { try{ a/b var arr = Array(1,2) arr(10) }catch{ case e: ArithmeticException => println(e) case ex: Exception =>println(ex) case th: Throwable=>println("found a unknown exception"+th) } finally{ println("Finaly block always executes") } println("Rest of the code is executing...") } } object Demo{ def main(args:Array[String]){ var e = new ExceptionExample() e.divide(100,10) } } 
Scala

将上面代码保存到源文件:Demo.scala中,使用以下命令编译并执行代码 -

D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo.scal
java.lang.ArrayIndexOutOfBoundsException: 10
Finally block always executes
Rest of the code is executing...

Scala throw关键字

可以在代码中明确地抛出异常。Scala提供throw关键字来抛出异常。 throw关键字主要用于抛出自定义异常。下面给出了使用scala throw异常关键字的例子。

Scala Throw示例

class ExceptionExample2{  
    def validate(age:Int)={ if(age<18) throw new ArithmeticException("You are not eligible") else println("You are eligible") } } object MainObject{ def main(args:Array[String]){ var e = new ExceptionExample2() e.validate(10) } }

Scala throws关键字

Scala提供了throws关键字来声明异常。可以使用方法定义声明异常。 它向调用者函数提供了此方法可能引发此异常的信息。 它有助于调用函数处理并将该代码包含在try-catch块中,以避免程序异常终止。在scala中,可以使用throws关键字或throws注释来声明异常。

Scala Throws示例

class ExceptionExample4{  
    @throws(classOf[NumberFormatException]) def validate()={ "abc".toInt } } object Demo{ def main(args:Array[String]){ var e = new ExceptionExample4() try{ e.validate() }catch{ case ex : NumberFormatException => println("Exception handeled here") } println("Rest of the code executing...") } }

 

转载于:https://www.cnblogs.com/xinfang520/p/7728869.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. Scala变量:Scala中的变量分为可变和不可变两种类型。不可变变量使用关键字val定义,一旦赋值后不可再更改;可变变量使用关键字var定义,赋值后可再次更改。例如: ```scala val age: Int = 18 // 不可变变量 var name: String = "Tom" // 可变变量 ``` 2. 访问修饰符:Scala中的访问修饰符有四种,分别为private、protected、public和默认访问权限。默认访问权限是指不使用任何访问修饰符,被定义为默认访问权限的成员在本类、伴生对象和包内都可以访问。例如: ```scala class Person { private var age: Int = 18 // 私有成员变量,只能在Person类中访问 protected var sex: String = "male" // 受保护的成员变量,能在Person类和子类中访问 var name: String = "Tom" // 默认访问权限,能在Person类、伴生对象和包内访问 } ``` 3. 运算符:Scala中的运算符包括算术运算符、比较运算符、逻辑运算符等。例如: ```scala val a: Int = 10 val b: Int = 5 val c: Boolean = true // 算术运算符 val sum: Int = a + b // 加法 val diff: Int = a - b // 减法 val product: Int = a * b // 乘法 val quotient: Int = a / b // 除法 val remainder: Int = a % b // 取余 // 比较运算符 val isEqual: Boolean = a == b // 是否相等 val isGreaterThan: Boolean = a > b // 是否大于 val isLessThan: Boolean = a < b // 是否小于 // 逻辑运算符 val and: Boolean = c && (a > b) // 与运算 val or: Boolean = c || (a < b) // 或运算 val not: Boolean = !c // 非运算 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值