سكالا معالجة استثناء
سكالا معالجة الاستثناء ولغات أخرى مشابهة مثل جافا.
قد رمي طريقة سكالا استثناء عن طريق وسيلة لإنهاء رمز ذات الصلة، دون المرور عبر قيمة الإرجاع.
رمي استثناء
طرق سكالا وجافا رمي استثناءات، واستخدام أساليب رمي، على سبيل المثال، ورمي المعلمات استثناء جديدة:
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...