關於catch語句塊中不要寫業務邏輯程式碼的建議
最近工作中,發現其他人員開發的模組功能中,在catch語句塊中呼叫了業務方法,目的是當try語句塊中的業務邏輯執行過程中發生異常,再執行catch語句塊中程式碼。
上述情況的業務場景是這樣的,try語句塊中查詢redis快取(try中查詢redis的程式碼有呼叫了其他開發人員寫的邏輯比較複雜的方法,且多個方法呼叫),catch語句塊中查詢後端資料庫,開發者意圖很明顯,就是如果查詢redis快取出現異常,則查詢後端資料庫,看似很完美的程式碼設計邏輯。但是完美下面也存在一定機率的風險。
風險分析。暫定該開發人員叫A,如果try語句塊中邏輯比較複雜,且呼叫了其他開發人員(名字為B)的方法,這時候開發人員B在自己的方法中也利用catch捕獲了異常,而不是向上丟擲異常,這時候問題出現了,A寫的程式碼中catch語句塊的業務邏輯有可能不會執行,這就違背了A的設計意圖,也就產生了非常討厭的邏輯bug。開發人員都知道邏輯bug的原因很難找的。
所以,在日常開發工作,catch語句塊中儘量不要寫業務邏輯,就列印寫異常日誌就可以了。
相關推薦
關於catch語句塊中不要寫業務邏輯程式碼的建議
最近工作中,發現其他人員開發的模組功能中,在catch語句塊中呼叫了業務方法,目的是當try語句塊中的業務邏輯執行過程中發生異常,再執行catch語句塊中程式碼。 上述情況的業務場景是這樣的,try語
java中try-catch模塊中with語句塊的作用
天突 java7 all 現在 NPU cat tput file try語句 以前寫try-catch時,遇到一些流、連接等對象,必定需要添加finally語句來關閉這些對象。今天突然發現try的with模塊可以省略在finally手動關閉的動作,可以通過將這些對象定義在
程式設計師面試金典: 9.14 Java 14.2在Java中,若在try-catch-finally的try語句塊中插入return語句,finally語句塊是否還會執行?
問題:在Java中,若在try-catch-finally的try語句塊中插入return語句,finally語句塊是否還會執行? 分析:不一定。如果在try語句中走到return語句之前都沒有發生異常,會走到return語句,就直接返回了。 如
java 網路 socket TCP / UDP / catch 語句塊捕捉到異常後,繼續執行語句塊後面的程式碼
java 網路 socket TCP / server 端 package test.java.Net; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStr
java中異常處理機制 throw拋出自定義業務邏輯異常 throws繼續拋出 catch捕獲後會自動繼續拋向調用方法
異常處理機制 ... cep super finally sta exc ace 避免 package com.swift; public class Exception_TestC { public static void main(String[] arg
Java中finally語句塊的深度解析(try catch finally的執行順序)
首先擺出結論: 1、除了以下2種情況外,不管有木有出現異常,finally塊中程式碼都會執行; ①程式未進入try{}塊的執行,如在try之前出現執行時異常,程式終止。 ②程式進入到try{}和cat
Java中try-catch-finally語句塊的應用
一、異常處理及catch的順序 catch塊跟在try語句後面,它可以是一個或多個;catch塊有一個引數,該引數是某種異常類的物件;多重catch語句中,異常型別必須子類在前父類在後;try語句塊不可以獨立存在,必須與catch或者finally塊共存
Try-Catch-Finally代碼塊中的return
打印 代碼 style pri bsp 自己 println public row 測試類的原型是這樣子的 public class TryCatchFinallyToReturn { public static void main(String[] args)
在程序開發中怎樣寫SQL語句可以提高數據庫的性能
也會 temp block 有意義 oltp 聚集索引 掃描方式 主鍵 減少 以下內容是公司dba總結。 1、 首先要搞明白什麽叫執行計劃? 執行計劃是數據庫根據SQL語句和相關表的統計信息作出的一個查詢方案,這個方案是由查詢優化器自動分析產生的,比如一條SQL語句如
在模塊中如何去寫輸出標誌位的程序
.... shift info jpg spa 命名 done fff 標誌位 在給標誌信號命名時,標誌位命名為...._sig表示,,比如shift_done_sig 表示。。。的標誌位在程序中怎麽寫輸出標誌位 兩種方法: 1.先不帶標誌位仿真,判斷輸入到輸出需要幾個時鐘
python中itertools模塊zip_longest函數實現邏輯
python itertools zip_longest 最近在看流暢的python,在看第14章節的itertools模塊,對其itertools中的相關函數實現的邏輯的實現其中在zip_longest(it_obj1, ..., it_objN, fillvalue=None)時,其函數實現的
java中try catch語句執行順序簡介
package com.string_lc; /** * @filename Test.java * @author l * @description */ public class Test { public static void main(String[] args) {
Response.End方法 在try...catch語句中執行Response.End()後如何停止執行catch語句中的內容
文章:在try...catch語句中執行Response.End()後如何停止執行catch語句中的內容 呼叫Response.End()方法能保證,只輸出End方法之前的內容。 呼叫Context.ApplicationInstance.CompleteRequest();方法,會輸出方
微信開發者工具初始化專案時,進去報錯:小程式重啟耗時過久,請確認業務邏輯中是否有複雜運算,或者死迴圈
如圖上,為錯誤原因。 之前用開發者工具用的好好地,前些日子又版本更新,升級了一下,然後開啟專案就出現上面的問題。當時以為電腦出啥問題了,也沒當回事。今天再次開啟開發者工具,發現還是出現上面的問題。一臉懵,新建專案,啥都沒做竟然出問題。網上一查同樣的問題一大堆。
idea中java: -source 1.5 中不支援 multi-catch語句 或不支援 lambda 表示式
一、在idea中出現如下錯誤 Error:(27, 35) java: -source 1.5 中不支援 multi-catch 語句 (請使用 -source 7 或更高版本以啟用 multi-catch 語句) 解決辦法: 在idea中重新設定 File ->Proj
乾貨 | 帶有業務邏輯的比對思想在介面測試中的應用
乾貨 | 帶有業務邏輯的比對思想在介面測試中的應用 原創: 虞斌 攜程技術中心 8月1日 前言 在網際網路企業中,開發專案的快速迭代是必不可少的。這就導致了大多數情況下,很多測試人員的迴歸測試速度遠遠跟不上專案開發的迭代速度。 傳統的介
關於執行緒池執行過程中,業務邏輯出現未知異常導致執行緒中斷問題反思
關於執行緒池執行過程中,業務邏輯出現未知異常導致執行緒中斷問題反思 最近在專案研發中的關於執行緒池應用過程中由於業務邏輯異常導致的執行緒中斷,但程式未中斷導致的髒資料問題 話不多說,在最近最新的一個版本釋出過程中,業務需要,我們要定期去給客戶預留出可用的資源資料,提供客戶使用,在
keepalived簡單實驗(三)vrrp_script中要不要寫weight欄位
今天在公司看到keepalived主備機器上的keepalived配置檔案的vrrp_scrip段中都沒有weight欄位,直接貼圖吧: master的配置檔案: backup的配置檔案: 指令碼的內容: 我在想,這樣寫就算master那邊的vrrp_scrip
轉:關於 Java 中 finally 語句塊的深度辨析
可不能小看這個簡單的 finally,看似簡單的問題背後,卻隱藏了無數的玄機。接下來我就帶您一步一步的揭開這個 finally 的神祕面紗。 問題分析 首先來問大家一個問題:finally 語句塊一定會執行嗎? 很多人都認為 finally 語句塊是肯定要執行的,其
解決程式碼中重複的捕獲 promise 錯誤的 try catch 語句
promise promise 的出現,提供了優雅的非同步解決方式,但是,多個連續繼發 promise 寫法依然繁瑣。 let promise = new Promise(function(resolve, reject){ // ... if(/* 非同步任務執行成功 */) { res