Kontrol edilmiş bir istisna atması gereken bir yöntem için bayt kodu yazılması mümkün mü? (Scala istisnalar kontrol yapılmadığı için) Aşağıdaki Scala eşdeğer yok ikenScala oluşturulmuş bayt kodu, kontrol edilen istisnayı nasıl azaltır?
public class CheckedExceptionJava {
public Class<?> testChecked(String s) throws ClassNotFoundException {
return Class.forName(s);
}
}
:
yöntemi kontrol istisna atar beyan süreceÖrneğin aşağıdaki Java sınıfı derleme değil
class CheckedException {
def testChecked(s : String) = Class.forName(s)
}
üretilen bayt kodu hemen hemen aynı olsa bile:
Compiled from "CheckedExceptionJava.java"
public class CheckedExceptionJava extends java.lang.Object{
public CheckedExceptionJava();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public java.lang.Class testChecked(java.lang.String) throws java.lang.ClassNotFoundException;
Code:
0: aload_1
1: invokestatic #2; //Method java/lang/Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
4: areturn
}
Compiled from "CheckedException.scala"
public class CheckedException extends java.lang.Object implements scala.ScalaObject{
public CheckedException();
Code:
0: aload_0
1: invokespecial #24; //Method java/lang/Object."<init>":()V
4: return
public java.lang.Class testChecked(java.lang.String);
Code:
0: aload_1
1: invokestatic #11; //Method java/lang/Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
4: areturn
}
Soru: Bu yöntemin içindeki kodun işlenmemesine rağmen, kontrol edilen bir istisna attığını işaretlemeyen bir bayt kodu oluşturmak mümkün mü (ve nasıl)?
Ohhh Görüyorum. Muhtemelen donanma gibi bir araçla mı? :) http://bit.ly/gNzXfA – OscarRyz