2012-08-26 21 views
15

Bu İşte aşağıda kodunda

Why is this exception is not printed? Why it's showing an error? bir takip soru neden ArithmeticException tetiklenmez edilir? ne olurNeden istisna burada tetiklenmiyor?

Its not gonna printed a=Infinity 

şu şekildedir:

class Exp 
{ 
    public static void main(String args[]) 
    { 
     float d,a=1; 
     try 
     { 
      d=0; 
      a=44/d; //no exception triggered here.. why? 
      System.out.print("Its not gonna printed a="+a); 
     } 
     catch(ArithmeticException e) 
     { 
      System.out.println("Print exception"+e); 
     } 
    } 
} 

yerine çıkış geliyor?

cevap

27

Sıfıra göre bir bölüm, tamsayı değerleri için bir istisna atar, ancak kayan değerler için bir istisna atar. Bu JLS #15.17.2 tanımlanır:

bir kayan nokta bölme işleminin sonucu, IEEE 754 aritmetik kuralları tarafından belirlenir:
[...], sıfır olmayan bir sonlu değer

  • takım sıfır ile imzalı bir sonsuzluk elde edilir. İşaret, yukarıda belirtilen kural tarafından belirlenir. Eğer int için a ve d türünü değiştirirseniz

, bir özel durum elde edecektir.

7

Divide by zerotamsayılar için geçerlidir ve JLS

uyarınca yüzen ve bu Infinity

olarak hesaplanır beri

Its not gonna printed a=Infinity 

olarak çıktı alacağı Ve durumda istediğimiz için bir istisna bakın sadece

değiştir Bu

a=44/0; 
için
a=44/d; 

İlgili konular