Scala จัดการข้อยกเว้น
การจัดการข้อยกเว้น Scala และภาษาอื่น ๆ ที่คล้ายกันเช่น Java
วิธี Scala อาจโยนยกเว้นโดยวิธีการวิธีการที่จะยุติการรหัสที่เกี่ยวข้องได้โดยไม่ต้องผ่านค่าตอบแทน
โยนข้อยกเว้น
Scala และ Java วิธีการโยนข้อยกเว้นการใช้วิธีการโยนเช่นโยนพารามิเตอร์ข้อยกเว้นใหม่:
throw new IllegalArgumentException
จับข้อยกเว้น
กลไกการจับที่ผิดปกติกับภาษาอื่น ๆ หากเกิดข้อยกเว้นจับคำพูดที่ถูกจับกุมตามลำดับ ดังนั้นในคำพูดของจับที่ข้อยกเว้นเฉพาะเจาะจงมากขึ้นที่จะพึ่งพามากขึ้นก่อนและหลังการผิดปกติร่วมกันมากขึ้นน่าเชื่อถือมากขึ้น หากมีข้อยกเว้นไม่จับคำพูดยกเว้นจะไม่ได้รับการประมวลผลและจะอัปเกรดเป็นฟังก์ชันที่ถูกเรียก
จับข้อยกเว้นจับประโยคไวยากรณ์และภาษาอื่น ๆ จะไม่เหมือนกัน ในกาลาความคิดที่ยืมมาทำรูปแบบการจับคู่เพื่อให้ตรงกับข้อยกเว้นเพื่อให้รหัสการจับกรณีที่เป็นชุดของคำเช่นเดียวกับในตัวอย่างนี้
import java.io.FileReader import java.io.FileNotFoundException import java.io.IOException object Test { 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") } } } }
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ scalac Test.scala $ scala Test Missing file exception
จับวลีในเนื้อหาที่มีการแข่งขันในกรณีที่เป็นสิ่งเดียวกัน เพราะการจัดการข้อยกเว้นอยู่ในลำดับถ้าความผิดปกติที่พบมากที่สุด Throwable เขียนในหน้าในด้านหลังของกรณีที่ยังไม่ได้จับดังนั้นคุณจึงจำเป็นที่จะเขียนมันสุดท้าย
คำสั่งสุดท้าย
ในที่สุดคำสั่งที่ใช้ในการดำเนินการอย่างใดอย่างหนึ่งในการประมวลผลปกติหรือขั้นตอนที่จะต้องมีการดำเนินการเมื่อเกิดข้อยกเว้นตัวอย่างดังต่อไปนี้:
import java.io.FileReader import java.io.FileNotFoundException import java.io.IOException object Test { 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...") } } }
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ scalac Test.scala $ scala Test Missing file exception Exiting finally...