Latest web development tutorials

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...