Latest web development tutorials

سكالا معالجة استثناء

سكالا معالجة الاستثناء ولغات أخرى مشابهة مثل جافا.

قد رمي طريقة سكالا استثناء عن طريق وسيلة لإنهاء رمز ذات الصلة، دون المرور عبر قيمة الإرجاع.


رمي استثناء

طرق سكالا وجافا رمي استثناءات، واستخدام أساليب رمي، على سبيل المثال، ورمي المعلمات استثناء جديدة:

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

عبارة الصيد في المحتوى مع المباراة في القضية هي بالضبط نفس الشيء. لأن معالجة الاستثناء في تسلسل، إذا كان الشذوذ الأكثر شيوعا، قابل للظهور، وكتب في الجبهة، في الجزء الخلفي من القضية التي لم يتم قبض، لذلك تحتاج إلى كتابة من الماضي.


أخيرا بيان

أخيرا يستخدم بيان لتنفيذ إما معالجة العادي أو تحتاج الخطوات التي يتعين القيام بها عند حدوث استثناء، والأمثلة على ذلك كما يلي:

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