Hits: 1563
紀錄一下各家語法的try catch
新公司要處理一個共70億筆的log資料,要把舊資料備份,新資料移動到另外一個表上。處理過程中發現了一個錯誤(轉換 expression 到資料類型 int 時發生算術溢位錯誤
),正在嘗試使用try catch找到是哪筆有問題,google了一下,找到這篇文章,順便紀錄一下
R
tryCatch({
# R指令
)
},
# 遇到 warning 時的自訂處理函數
warning = function(msg) {
message("Original warning message:")
message(paste0(msg,"\n"))
return(NULL)
},
# 遇到 error 時的自訂處理函數
error = function(msg) {
message("Original error message:")
message(paste0(msg,"\n"))
return(NA)
}
SQL
BEGIN CATCH
--DB查詢用
SELECT ERROR_NUMBER() AS ErrorNumber,
ERROR_MESSAGE() AS ErrorMessage,
ERROR_LINE() AS ErrorLine,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState
--系統拋回訊息用
DECLARE @ErrorMessage As VARCHAR(1000) = CHAR(10)+'錯誤代碼:' +CAST(ERROR_NUMBER() AS VARCHAR)
+CHAR(10)+'錯誤訊息:'+ ERROR_MESSAGE()
+CHAR(10)+'錯誤行號:'+ CAST(ERROR_LINE() AS VARCHAR)
+CHAR(10)+'錯誤程序名稱:'+ ISNULL(ERROR_PROCEDURE(),'')
DECLARE @ErrorSeverity As Numeric = ERROR_SEVERITY()
DECLARE @ErrorState As Numeric = ERROR_STATE()
RAISERROR( @ErrorMessage, @ErrorSeverity, @ErrorState);--回傳錯誤資訊
END CATCH
python
def divide(x, y):
try:
result = x / y
except ZeroDivisionError:
print("不能除以零!")
else:
print("相除結果是: ", result)
finally:
print("不論如何都會執行finally")
divide(2, 1)
print("======")
divide(2, 0)
>>> 相除結果是: 2.0
>>> 不論如何都會執行finally
>>> ======
>>> 不能除以零!
>>> 不論如何都會執行finally
Comments