我在spark-scala代码中定义了一个变量,并尝试使用catch块。
if (exceptionFlag = "TRUE"){
write the error details to hive...
}
在这个try catch块之后,我需要根据标志写出逻辑。
{{1}}
我定义的变量无法在catch块中访问,因此我无法设置标志。
你能否建议如何处理这种情况......
谢谢, 鲍勃
答案 0 :(得分:1)
try ... catch是Scala中的表达式,您可以在不使用var:
的情况下执行相同的操作scala> :paste
// Entering paste mode (ctrl-D to finish)
def test(): Unit ={
val exceptionFlag = try{
val x=10/0
"FALSE"
}
catch{
case ex: Exception=> "TRUE"
}
if (exceptionFlag == "TRUE"){
println("write the error details to hive...")
}
}
// Exiting paste mode, now interpreting.
test: ()Unit
scala> test()
write the error details to hive...
scala>
答案 1 :(得分:0)
你可以这样做
object Driver{
def test(): Unit ={
var exceptionFlag = ""
try{
val x=10/0
exceptionFlag = "FALSE"
}
catch{
case ex: Exception=> exceptionFlag = "TRUE"
}
if (exceptionFlag == "TRUE"){
println("write the error details to hive...")
}
}
def main(arr:Array[String]) {
test
}
}
示例输出:
write the error details to hive...