2012-04-26 11 views
7

doğru istisna: şöyle Java onu çağırma@throws yakalamak için Java çağıran izin vermez Bazı Scala böyle koduna sahip tip

class Callee { 
    @throws(classOf[MyCheckedException]) 
    def doStuff() { 
    } 
} 

:

public class Caller { 

    public static void main(String[] args) { 
    // this won't compile; the Java compiler complains that the catch block is unreachable 
    // however without the catch block, it complains "unhandled exception MyCheckedException" 
    try { 
     new Callee().doStuff(); 
    } 
    catch (MyCheckedException e) { 

    } 
    } 
} 

catch bloğu Çıkarma "derlenmemiş özel durum türü MyCheckedException" yazan bir Java derleyicisinden bir hatayla sonuçlanır. MyCheckedException için catch bloğunun eklenmesi, derleyicinin erişilemeyen catch bloğu hakkında şikâyette bulunmasına neden olur, çünkü istisna asla atılmaz.

İstisna yakalayıp bir instanceOf yaparsam, doStuff'dan gelen doğru özel durumu yakalayabilirim, ancak @throws ek açıklamasının düzgün bir catch bloğunun çalışması için doğru bayt kodu oluşturduğunu sanıyordum. Yanlış mıyım yoksa burada bir böcek mi var?

Kayıt için, bu Scala 2.9.2 ve Java 1.6 ile.

Düzenleme: Komut satırından sbt kullanarak javac/scalac komutunu güzelce derler. Hata, Eclipse'de derleme sırasında olduğu gibi görünür. Bu, hatanın Eclipse Java Derleyicisi'nde veya IDE'nin bazı bölümlerinde olduğunu gösterir. Diğerleri bu şekilde yeniden üretebilir mi? Eclipse 3.7.2

+1

yardım –

+0

yeniden Can not bazı kod göstermek Eğer eksiksiz bir örnek sağlayabilir? – axtavt

+0

Tam sınıflar şimdi –

cevap

6

Kullanıyorum Bunu Helios'da 2.9.1 ile yeniden üretebilirim. Bu, sunum derleyicisindeki bir hatadır ve http://www.assembla.com/spaces/scala-ide/tickets'da bir hata olarak kaldırmalısınız.

+2

Teşekkürler. Http://scala-ide-portfolio.assembla.com/spaces/scala-ide/tickets/[email protected] adresinin kopyası olabilir veya olmayabilir. scala-özellikleri, ama şimdi –

+0

@David North için ayrı ayrı yükselteceğim Bağlandığınız biletin bir kopyası olduğundan eminim. Belki de test çantanızı aynı bilete ekleyebilirsin. –

+0

Sonlandırıldı http://scala-ide-portfolio.assembla.com/spaces/scala-ide/support/tickets/[email protected]ing -Kod –

2

Gelecekte başvurmak üzere, bu sorun giderilmiştir (https://github.com/scala-ide/scala-ide/commit/055a81cd3fe792e4327668791888c30cf04793f5). Düzeltme zaten Scala IDE 2.0.x and Helium nightlies ile kullanılabilir. Ayrıca, bir sonraki Scala IDE 2.0.2 bakım sürümüne dahil edilecektir.

(ek gürültü için üzgün ama bir cevap olan basit bir açıklama daha görünür olduğunu fark)

, size yardım etmemizi

İlgili konular