java

2016-04-01 11 views
0

istisnası için try-catch yöntemini kullanırken sorun yaşıyorum Özel durumun başarılı bir şekilde nasıl deneneceğini bilmiyorum. Gördüğünüz gibi try-catch ifadesini çoktan başlattım ama nasıl bitireceğimi bilmiyorum. Ben hatası ": Hata: tractorException.java:83 bildirilmemiş istisna tractorException; yakalanan veya setVehicleID (0) atılmak üzere beyan edilmelidir;" olsunjava

import java.io.*; 
import java.util.*; 
import javax.swing.*; 

public class tractorException extends Exception { 
    protected int VehicleID; 

    public int setVehicleID(int VehicleID) throws tractorException { 
     if (VehicleID <= 0 || VehicleID > 100000) { 
      throw new tractorException(); 
     } else { 
      this.VehicleID = VehicleID; 
      return this.VehicleID; 
     } 
    } 

    public int getVehicleID() { 
     return this.VehicleID; 
    } 

    tractorException() { 
     setVehicleID(0); 
    } 

    public static void main (String[] args) { 
     try { 
      throw new Exception("Something went wrong!!"); 
     } catch (Exception e) {    
     } 
+0

olduğu için Doğrudan setVehicleID yöntemini çağırın olamaz başarmak? Sonsuz istisnalar atar bir sınıf? –

+0

Evet Sadece istisnalar ekleyen bir sınıfa ulaşmaya çalışıyorum – MajorJavaUser

cevap

0

için main yöntemini değiştirin:

public static void main (String[] args) { 
     try { 
     throw new tractorException(); // infinite loop ensues 
     } catch (Exception e) { 
     // this catch doesn't matter 
     } 
} 

Sonsuz döngü, tractorException yapıcısının setVehicleID(0) numaralı telefon numarasını aradığı ve bu nedenle, setVehicleID(0) ... 'yi sonsuza ve ötesine çağıran throw new tractorException() numaralı telefonu çağırdığı için oluşur.

+0

Programın derlenmesini sağlamak için, kurucunun '' traktörException'ı attığını da bildirmeniz gerekir. –

+0

Programın bir "tractorException" atmasını sağlarsanız derlemeyeceğini sanmıyorum, ama sanırım java derleyicisi sonsuz bir döngünün gerçekleşeceğini söyleyecek kadar akıllıdır. –

+0

Yapıyor: http://ideone.com/oa9TN8 Bu kesinlikle tamamen anlamsız. –

0

İstisnai atan bir işlev yakalanmalı veya atılması gerektiği beyan edilmelidir. Kodunuzla ilgili sorununuz, gönderdiğiniz hata günlüğünde belirtildiği gibi setVehicleID(0); satırındadır.

setVehicleID() yöntemi istisna atar, bu işlevi çağırdığınızda her zaman yakalanmalı veya yeniden atılmalıdır. Hatanızı düzeltmek için, Try catch ile bu çağrıyı çevreleyen gerekir: girmek deneyin

tractorException() 
    { 
    try{ 
     setVehicleID(0); 
    } 
    catch(tractorException e) { 
     // Do something with error 
    } 
    } 
+0

Ayrıca setVehicleID (0) 0 olarak değer geçişi ile bir istisna oluşturacağına işaret etmek isteriz, bu nedenle setVehicleID (0) .. vs .. 'i çağıracak olan kurucuyu çağırır. Temelde sonsuz bir döngü –

+0

Bu kodu ana yönteme mi gireceksiniz? – MajorJavaUser

+0

Yukarıda gösterildiği gibi, try-catch bloğuna sahip olmak için kodun tractorException() öğesini güncellemek istersiniz. Bu, şu anda sahip olduğunuz derleme sorununu çözecektir. –

0

bu

Eğer çalıştığımız şey riskli Yöntem

tractorException() { 
try{ 
    setVehicleID(0); 
}catch(Exception e){ 

} 
}