2012-09-12 10 views
23

groovy komut dosyasını erken bırakmanın en iyi yolu nedir?groovy komut dosyasını erken terk etmenin en iyi yolu (system.exit (0) hariç)

Mükemmel bir betik, belirli bir bilgi dosyasından bir satır okur, ardından doğrulama işlemi başarısız olur (tutarsız veri) komut dosyasının akışı zamanından önce bırakması gerektiğinde bazı doğrulama çalışmaları yapar.

read a row 
try{ 
    //make some verification here 
}catch(Exception e){ 
    logger("exception on something occurred "+e,e) 
    //here need to leave a groovy script prematurely 
} 
+1

yeniden başlatmak için bıraktığınız senin sorunun olacak ... Eğer harika çağırıyor ne olursa olsun iç döngü taşımak ve sadece her satırı doğrulanamıyor senaryo? Ya da belki de komut satırını okumak için kullanılabilecek bir BufferedReader komutunu iletebilir, ancak komut dosyasının çağrılması arasındaki durumu koruyacak mı? –

+0

Yorumunuz için teşekkür ederiz, benim durumumda sunucu tüm rutin işleri yapıyor – Toren

+1

Bu sizin deneyin yakalamak yeni bir istisna atarsınız yakalamayın yeni bir istisna atarsınız –

cevap

18

Sadece System.exit(0) kullanın: Daha sonra sistem

Kod dosyası örneği aynı bilgi sonraki satırı okumak için komut dosyasını tekrar arayacak.

try { 
    // code 
} catch(Exception e) { 
    logger("exception on something occurred "+e,e) 
    System.exit(0) 
} 

Sen ile ilgili sorunlar vardı hangi satır belirtmek için çıkış durum kodu kullanabilirsiniz.

Sıfır değeri, her şeyin tamam olduğunu ve pozitif bir değerin satır numarası olacağını gösterir. Daha sonra, groovy komut dosyanızın başlangıç ​​satırını bir giriş parametresi olarak almasına izin verebilirsiniz.


Bir satır boşsa, bu yalnızca aptal bir istisna ile saf bir uygulamadır.

file = new File(args[0]) 
startLine = args[1].toInteger() 

file.withReader { reader -> 
    reader.eachLine { line, count -> 
     try { 
      if (count >= startLine) { 
       if (line.length() == 0) throw new Exception("error") 
       println count + ': ' + line 
      } 
     } catch (Exception ignore) { 
      System.exit(count) 
     } 
    } 
} 
+1

Öneri için teşekkür ederim ama system.exit (0) kullanamıyorum Benim durumum, (başlangıçta bahsetmediğim için üzgünüm), başka bir çözüm arıyoruz – Toren

+3

@Toren Tamam, ama daha fazla bilgi ile sorunuzu güncelleyebilirseniz harika olurdu. O zaman ihtiyaçlarınızı karşılayacak bir cevap alacağınızdan eminim. – maba

+7

jenkins kapatma neden olur – bicepjai

18

Bir komut dosyasından yalnızca 'dönüş' yapabileceğinizden eminim.

0

Basitçe dönüş kullanın:

read a row 
try{ 
    //make some verification here 
}catch(Exception e){ 
    logger("exception on something occurred "+e,e) 
    //here need to leave a groovy script prematurely 
    return 
} 
İlgili konular