2021年大数据常用语言Scala(三十四):scala高级用法 异常处理
生活随笔
收集整理的這篇文章主要介紹了
2021年大数据常用语言Scala(三十四):scala高级用法 异常处理
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
異常處理
捕獲異常
拋出異常
異常處理
Scala中 無需在方法上聲明異常
來看看下面一段代碼。
??def?main(args:?Array[String]):?Unit?=?{val?i =?10?/?0println("你好!")}Exception in thread "main"?java.lang.ArithmeticException:?/?by zero
at ForDemo$.main(ForDemo.scala:3)
at ForDemo.main(ForDemo.scala)
執(zhí)行程序,可以看到scala拋出了異常,而且沒有打印出來"你好"。說明程序出現(xiàn)錯(cuò)誤后就終止了。
那怎么解決該問題呢?
?
捕獲異常
在scala中,可以使用異常處理來解決這個(gè)問題。以下為scala中try...catch異常處理的語法格式:
try?{// 代碼
}
catch?{// 這里面是偏函數(shù), 走的是模式匹配case?ex:異常類型1 =>?// 代碼case?ex:異常類型2 =>?// 代碼
}
finally?{// 代碼
}
- try中的代碼是我們編寫的業(yè)務(wù)處理代碼
- 在catch中表示當(dāng)出現(xiàn)某個(gè)異常時(shí),需要執(zhí)行的代碼
- 在finally中,是不管是否出現(xiàn)異常都會(huì)執(zhí)行的代碼
?
示例:
try?{val?i =?10?/?0println("你好!")
}?catch?{case?ex:?Exception =>?println(ex.getMessage)
}?finally?{println("我始終都會(huì)執(zhí)行!")
}
?
拋出異常
?
我們也可以在一個(gè)方法中,拋出異常。語法格式和Java類似,使用throw new Exception...
?
示例:
??def?main(args:?Array[String]):?Unit?=?{throw?new?Exception("這是一個(gè)異常")}Exception in thread "main"?java.lang.Exception:?這是一個(gè)異常
at ForDemo$.main(ForDemo.scala:3)
at ForDemo.main(ForDemo.scala)
?
我們可以看到,scala不需要再main方法上聲明要拋出的異常,它已經(jīng)解決了再Java中被認(rèn)為是設(shè)計(jì)失敗的檢查型異常。下面是Java代碼
?
????public?static?void?main(String[]?args)?throws?Exception?{throw?new?Exception("這是一個(gè)異常");}
?
scala異常處理語法要比Java簡(jiǎn)潔、易用。
?
1.scala中也是使用try...catch...finally處理異常
2.所有異常處理都是在catch語句中,每一個(gè)異常處理寫成
?ex1:異常類型1 =>?異常處理代碼
case?ex2:異常類型1 =>?異常處理代碼
case?ex3:異常類型1 =>?異常處理代碼
3.拋出異常使用throw
4.scala中方法拋出異常不需要像Java一樣編寫異常聲明
總結(jié)
以上是生活随笔為你收集整理的2021年大数据常用语言Scala(三十四):scala高级用法 异常处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据常用语言Scala(三十
- 下一篇: 2021年大数据常用语言Scala(三十