- Scala Tutorial
- Scala - Home
- Scala - Overview
- Scala - Environment Setup
- Scala - Basic Syntax
- Scala - Data Types
- Scala - Variables
- Scala - Classes & Objects
- Scala - Access Modifiers
- Scala - Operators
- Scala - IF ELSE
- Scala - Loop Statements
- Scala - Functions
- Scala - Closures
- Scala - Strings
- Scala - Arrays
- Scala - Collections
- Scala - Traits
- Scala - Pattern Matching
- Scala - Regular Expressions
- Scala - Exception Handling
- Scala - Extractors
- Scala - Files I/O
- Scala Useful Resources
- Scala - Quick Guide
- Scala - Useful Resources
- Scala - Discussion
Scala - 异常处理
Scala 的异常工作方式与许多其他语言(如 Java)中的异常类似。方法可以通过抛出异常来终止,而不是以正常方式返回值。然而,Scala 实际上并没有检查异常。
当您想要处理异常时,可以像在 Java 中一样使用 try{...}catch{...} 块,只不过 catch 块使用匹配来识别和处理异常。
抛出异常
抛出异常看起来与 Java 中相同。您创建一个异常对象,然后使用throw关键字抛出它,如下所示。
throw new IllegalArgumentException
捕获异常
Scala 允许您尝试/捕获单个块中的任何异常,然后使用case块对其执行模式匹配。尝试以下示例程序来处理异常。
例子
import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException
object Demo {
def main(args: Array[String]) {
try {
val f = new FileReader("input.txt")
} catch {
case ex: FileNotFoundException =>{
println("Missing file exception")
}
case ex: IOException => {
println("IO Exception")
}
}
}
}
将上述程序保存在Demo.scala中。以下命令用于编译和执行该程序。
命令
\>scalac Demo.scala \>scala Demo
输出
Missing file exception
此try-catch表达式的Behave与其他语言中的Behave相同,但有例外。主体被执行,如果抛出异常,则依次尝试每个catch子句。
最后子句
如果您希望无论表达式如何终止都执行某些代码,则可以使用 finally 子句包装表达式。尝试以下程序。
例子
import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException
object Demo {
def main(args: Array[String]) {
try {
val f = new FileReader("input.txt")
} catch {
case ex: FileNotFoundException => {
println("Missing file exception")
}
case ex: IOException => {
println("IO Exception")
}
} finally {
println("Exiting finally...")
}
}
}
将上述程序保存在Demo.scala中。以下命令用于编译和执行该程序。
命令
\>scalac Demo.scala \>scala Demo
输出
Missing file exception Exiting finally...