আপনি যে ব্যতিক্রমটি দেখছেন তা স্ক্রিপ্ট সুরক্ষা এবং স্যান্ডবক্সিংয়ের কারণে । মূলত, ডিফল্টরূপে, আপনি যখন পাইপলাইন স্ক্রিপ্টটি চালান, এটি একটি স্যান্ডবক্সে চলে যা কেবলমাত্র কয়েকটি নির্দিষ্ট পদ্ধতি এবং ক্লাস ব্যবহারের অনুমতি দেয়। হোয়াইটলিস্ট অপারেশন করার উপায় আছে, উপরের লিঙ্কটি পরীক্ষা করুন।
@NonCPS
আপনি কোন বস্তু যা serializable না ব্যবহার পদ্ধতি আছে যখন টীকা দরকারী। সাধারণত, আপনার পাইপলাইন স্ক্রিপ্টে আপনি যে সমস্ত বস্তু তৈরি করেন সেগুলি অবশ্যই সিরিয়ালাইজ করতে হবে (এর কারণ হ'ল জেনকিন্স অবশ্যই স্ক্রিপ্টের স্থিতিটি সিরিয়াল করতে সক্ষম হবে যাতে এটি থামানো এবং ডিস্কে সঞ্চয় করা যায়)।
আপনি যখন @NonCPS
কোনও পদ্ধতি প্রয়োগ করেন, জেনকিন্স বিরতি দেওয়ার ক্ষমতা ছাড়াই একসাথে পুরো পদ্ধতিটি সম্পাদন করে। এছাড়াও, আপনাকে কোনও টীকাবিহীন পদ্ধতির মধ্যে থেকে কোনও পাইপলাইন পদক্ষেপ বা সিপিএস রূপান্তরিত পদ্ধতিগুলি উল্লেখ করার অনুমতি নেই @NonCPS
। এই সম্পর্কে আরও তথ্য এখানে পাওয়া যাবে ।
ব্যতিক্রম হ্যান্ডলিংয়ের ক্ষেত্রে: আপনি যা अनुभव করছেন তা 100% নিশ্চিত নয়; আমি নিম্নলিখিতটি চেষ্টা করেছি এবং এটি প্রত্যাশার মতো কাজ করে:
@NonCPS
def myFunction() {
throw new RuntimeException();
}
try {
myFunction();
} catch (Exception e) {
echo "Caught";
}
এবং
@NonCPS
def myFunction() {
throw new RuntimeException();
}
def mySecondFunction() {
try {
myFunction();
} catch (Exception e) {
echo "Caught";
}
}
mySecondFunction();
এবং পরিশেষে:
@NonCPS
def myFunction() {
throw new RuntimeException();
}
@NonCPS
def mySecondFunction() {
try {
myFunction();
} catch (Exception e) {
echo "Caught";
}
}
mySecondFunction();
সমস্ত প্রত্যাশিত হিসাবে "ধরা" মুদ্রণ।