Gördüğünüz istisna, komut dosyası güvenliği ve korumalı alandan kaynaklanıyor. Temel olarak, varsayılan olarak, bir ardışık düzen komut dosyası çalıştırdığınızda, yalnızca belirli yöntemlerin ve sınıfların kullanımına izin veren bir sanal alanda çalışır. İşlemleri beyaz listeye almanın yolları vardır, yukarıdaki bağlantıyı kontrol edin.
@NonCPS
Eğer seri hale getirilebilir olmayan nesneleri kullanmak yöntemler varken açıklama yararlıdır. Normalde, ardışık düzen betiğinizde oluşturduğunuz tüm nesneler serileştirilebilir olmalıdır (bunun nedeni, Jenkins'in betiğin durumunu duraklatıp diskte depolanabilmesi için serileştirebilmesi gerektiğidir).
Bir @NonCPS
yöntem koyduğunuzda , Jenkins tüm yöntemi tek seferde duraklatma yeteneği olmadan çalıştıracaktır. Ayrıca, @NonCPS
açıklamalı bir yöntem içinden herhangi bir ardışık düzen adımına veya CPS dönüştürülmüş yönteme başvurmanıza izin verilmez . Bununla ilgili daha fazla bilgiyi burada bulabilirsiniz .
İstisna işleme konusuna gelince: Ne yaşadığınızdan% 100 emin değilim; Aşağıdakileri denedim ve beklendiği gibi çalışıyor:
@NonCPS
def myFunction() {
throw new RuntimeException();
}
try {
myFunction();
} catch (Exception e) {
echo "Caught";
}
ve
@NonCPS
def myFunction() {
throw new RuntimeException();
}
def mySecondFunction() {
try {
myFunction();
} catch (Exception e) {
echo "Caught";
}
}
mySecondFunction();
ve sonunda:
@NonCPS
def myFunction() {
throw new RuntimeException();
}
@NonCPS
def mySecondFunction() {
try {
myFunction();
} catch (Exception e) {
echo "Caught";
}
}
mySecondFunction();
Hepsi beklendiği gibi "Yakalandı" yazdırın.