日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
干貨!Pipeline腳本穩(wěn)定運(yùn)行的核心設(shè)計思路

如果想要CI/CD持續(xù)穩(wěn)定的運(yùn)行,那么pipeline腳本的穩(wěn)定性就是最核心的問題,那么如何才能讓pipeline腳本穩(wěn)定的運(yùn)行呢?就是應(yīng)用異常!這里以腳本化Pipeline script為例進(jìn)行講解,如果您使用聲明式pipeline script,請把異常處理機(jī)制放在script {}中(這里不對聲明式pipeline script做詳細(xì)介紹)。

創(chuàng)新互聯(lián)主營礦區(qū)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā)公司,礦區(qū)h5小程序開發(fā)搭建,礦區(qū)網(wǎng)站營銷推廣歡迎礦區(qū)等地區(qū)企業(yè)咨詢

編碼式Pipline的異常使用

Pipeline 處理異常的形式如下:

 
 
 
 
  1. node { 
  2. sh './set-up.sh' 
  3. try { 
  4. sh 'might fail' 
  5. echo 'Succeeded!' 
  6. } catch (err) { 
  7. echo "Failed: ${err}" 
  8. } finally { 
  9. sh './tear-down.sh' 
  10. echo 'Printed whether above succeeded or failed.' 

異常通用概念

在這里需要介紹一下異常相關(guān)的基礎(chǔ)概念:

Exception

檢查性異常:最具代表的檢查性異常是用戶錯誤或問題引起的異常,這是程序員無法預(yù)見的。例如要打開一個不存在文件時,一個異常就發(fā)生了,這些異常在編譯時不能被簡單地忽略。

運(yùn)行時異常:運(yùn)行時異常是可能被程序員避免的異常。與檢查性異常相反,運(yùn)行時異??梢栽诰幾g時被忽略。

Error

錯誤:錯誤不是異常,而是脫離程序員控制的問題。錯誤在代碼中通常被忽略。例如,當(dāng)棧溢出時,一個錯誤就發(fā)生了,它們在編譯也檢查不到的。下圖顯示了如何組織Groovy中的異常層次結(jié)構(gòu)。它都基于Java中定義的層次結(jié)構(gòu)。

try和catch的使用

方法使用try和catch關(guān)鍵字的組合捕獲異常。 try/catch塊放在可能生成異常的代碼周圍。

 
 
 
 
  1. try{ 
  2. //保護(hù)的代碼 
  3. } catch(ExceptionName e1) { 
  4. //處理異常的代碼 

 可以有多個catch塊來處理多種類型的異常。對于每個catch塊,根據(jù)引發(fā)的異常類型,您將編寫代碼來相應(yīng)地處理它。

 
 
 
 
  1. try { 
  2. def arr = new int[3]; 
  3. arr[5] = 5; 
  4. catch(ArrayIndexOutOfBoundsExceptionex) { 
  5. println("捕獲Array out of Bounds exception"); 
  6. catch(IOException ex) { 
  7. println("捕獲 io exception"); 

 結(jié)果輸出

捕獲Array out of Bounds exception

finally塊

finally塊遵循try塊或catch塊。無論發(fā)生異常,最終都會執(zhí)行最后一段代碼。

 
 
 
 
  1. try { 
  2. def arr = new int[3]; 
  3. arr[5] = 5; 
  4. catch(ArrayIndexOutOfBoundsExceptionex) { 
  5. println("捕獲Array out of Bounds exception"); 
  6. catch(IOException ex) { 
  7. println("捕獲 io exception"); 
  8. finally{ 
  9. println("執(zhí)行final 塊"); 

 結(jié)果輸出

捕獲Array out of Boundsexception

執(zhí)行final塊

備注:如果大家不確認(rèn)具體的異常類型直接使用exception(或者exp)就可以,因為它是各種exception的父類!

error的處理

當(dāng)我們需要處理錯誤(錯誤不是異常,而是脫離程序員控制的問題。)的時候,就需要使用error(或者err)了。

 
 
 
 
  1. try { 
  2. //保護(hù)的代碼 
  3. catch(error) { 
  4. //處理錯誤的代碼 

穩(wěn)定代碼的設(shè)計核心點

如果想使我們的代碼穩(wěn)定運(yùn)行,既處理異常又捕獲error,可以這樣處理

 
 
 
 
  1. try { 
  2. //保護(hù)的代碼 
  3. catch(err) { 
  4. //處理錯誤的代碼 
  5. catch(exp){ 
  6. //處理異常的代碼 

 在pipeline中的應(yīng)用如下所示,這樣設(shè)計可以確保我們的pipeline穩(wěn)定運(yùn)行。

 
 
 
 
  1. node { 
  2. try { 
  3. //pipeline運(yùn)行的腳本 
  4. catch(err) { 
  5. //處理pipeline中代碼的異常 
  6. catch(exp){ 
  7. //處理pipeline中遇到的錯誤信息 

網(wǎng)站欄目:干貨!Pipeline腳本穩(wěn)定運(yùn)行的核心設(shè)計思路
URL分享:http://www.5511xx.com/article/cocgsci.html