2009-10-10 11 views
25

, Scala yakalama veya nihayet maddesi ya olmaksızın, bir çıplak "dene" yapalım:Scala'nın "denemesi" ne bir yakalama veya nihayetinde bloke olmaksızın ne anlama geliyor? Java aksine

scala> try { println("Foo") } 
Foo 

bu aslında ötesinde herhangi bir anlamı var mıdır,

{ println("Foo") } 

?

+1

Scala 2.11'den itibaren, bir uyarı alıyoruz. 'uyarı: Bir yakalama olmadan bir deneyin ya da nihayet bir vücuda bir bloğa koymakla eşdeğerdir; istisnalar ele alınmaz. ” – Jus12

cevap

25

Scala'nın istisna işleme, herhangi bir özel durumu anonim bir yakalama işlevine geçirerek çalışır. Yakalama işlevi yakalanan istisna ile eşleşen desene göre çalışır ve eşleşmezse istisnayı iletir.

Yakalama işlevi isteğe bağlıdır, eğer atlanırsa istisna düz olarak iletilir. Yani esasen

try { exceptionThrowingFunction() } 

fazla bilgi için language spec pdf

exceptionThrowingFunction() 

bakınız bölüm 6.22 ile aynıdır.

1

Sanmıyorum. Scala'nın yakalama olmadan denemeye izin verdiğini düşünüyorum ya da bunu yasaklamak için bir sebep yok.

+5

Çıplak bir“ try ”kullanmak için herhangi bir gerçek neden olmadığının farz edilmesi, programcı hatalarını yakalamak ve potansiyel karışıklığı azaltmak için bir neden olduğunu unutmamak. Ama kesinlikle, bu iki şekilde büyük bir anlaşma değil. –