大部分情况下我们接触到的异常都是由系统生成的。但也可以通过 throw
语句主动的抛出异常,语法格式如下:
throw Throwable 或其子类的示例
所有 Throwable
或其子类的实例都可以用 throw
语句抛出。
显示抛出异常的作用有很多,例如不像某些异常传给上层调用者,可以捕获之后重新显示抛出另外一种异常给调用者。
fun main(args: Array<String>?) {
try {
val date = readDate()
println("读取的日期 = $date")
} catch (e: MyException) {
println("处理 MyException...")
e.printStackTrace()
}
}
class MyException : Exception {
constructor() {}
constructor(message: String) : super(message)
}
private fun readDate(): Date? {
try {
FileInputStream("readme.txt").use {
InputStreamReader(it).use {
BufferedReader(it).use {
// 读取文件中的一行数据
val str = it.readLine() ?: return null
val df = SimpleDateFormat("yyyy-MM-dd")
return df.parse(str)
}
}
}
} catch (e: FileNotFoundException) {
throw MyException()
} catch (e: IOException) {
throw MyException()
} catch (e: ParseException) {
throw MyException()
}
return null
}
网友评论