1. 程式人生 > >(二)阿里巴巴JAVA程式設計規範之異常日誌

(二)阿里巴巴JAVA程式設計規範之異常日誌

反例:public int f(){ returnInteger物件},如果為null,自動解箱拋NPE

2資料庫的查詢結果可能為null

3集合裡的元素即使isNotEmpty,取出的資料元素也可能為null

4遠端呼叫返回物件,一律要求進行NPE判斷。

5對於Session中獲取的資料,建議NPE檢查,避免空指標。

6級聯呼叫obj.getA().getB().getC();一連串呼叫,易產生NPE

11.【推薦】在程式碼中使用拋異常還是返回錯誤碼,對於公司外的http/api開放介面必須使用錯誤碼;而應用內部推薦異常丟擲;跨應用間RPC呼叫優先考慮使用Result

方式封裝isSuccess錯誤碼錯誤簡簡訊息

說明:關於RPC方法返回方式使用Result方式的理由:

1)使用拋異常返回方式,呼叫方如果沒有捕獲到就會產生執行時錯誤。

2)如果不加棧資訊,只是new自定義異常,加入自己的理解的error message,對於呼叫端解決問題的幫助不會太多。如果加了棧資訊,在頻繁調用出錯的情況下,資料序列化和傳輸的效能損耗也是問題。

12.【推薦】定義時區分unchecked/checked異常,避免直接使用RuntimeException丟擲,更不允許丟擲Exception或者Throwable,應使用有業務含義的自定義異常。推薦業界已定義過的自定義異常,如:

DaoException / ServiceException等。

13.【參考】避免出現重複的程式碼(Don’t RepeatYourself),即DRY原則。

說明:隨意複製和貼上程式碼,必然會導致程式碼的重複,在以後需要修改時,需要修改所有的副本,容易遺漏。必要時抽取共性方法,或者抽象公共類,甚至是共用模組。

正例:一個類中有多個public方法,都需要進行數行相同的引數校驗操作,這個時候請抽取:

private boolean checkParam(DTO dto){...}

(日誌規約

1.【強制】應用中不可直接使用日誌系統(Log4jLogback)中的API,而應依賴使用日誌框架

SLF4J中的API,使用門面模式的日誌框架,有利於維護和各個類的日誌處理方式統一。

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

private static final Loggerlogger = LoggerFactory.getLogger(Abc.class);

2. 【強制】日誌檔案推薦至少儲存15天,因為有些異常具備以為頻次發生的特點。

3. 【強制】應用中的擴充套件日誌(如打點、臨時監控、訪問日誌等)命名方式:appName_logType_logName.loglogType:日誌型別,推薦分類有stats/desc/monitor/visit

等;logName:日誌描述。這種命名的好處:通過檔名就可知道日誌檔案屬於什麼應用,什麼

相關推薦

阿里巴巴JAVA程式設計規範異常日誌

反例:public int f(){ returnInteger物件},如果為null,自動解箱拋NPE。 2)資料庫的查詢結果可能為null。 3)集合裡的元素即使isNotEmpty,取出的資料元素也可能為null。 4)遠端呼叫返回物件,一律要求進行NPE判斷。 5)對於Session中獲取的資料,建

阿里巴巴JAVA程式設計規範MYSQL規約

(一) 建表規約 1. 【強制】表達是與否概念的欄位,必須使用is_xxx的方式命名,資料型別是unsignedtinyint  (1表示是,0表示否),此規則同樣適用於odps建表。  說明:任何欄位如果為非負數,必須是unsigned。 2. 【強制】表名、欄位名必

阿里巴巴JAVA程式設計規範工程規約

開放介面層:可直接封裝Service介面暴露成RPC介面;通過Web封裝成http介面;閘道器控制層等。終端顯示層:各個端的模板渲染並執行顯示層。當前主要是velocity渲染,JS渲染,JSP渲染,移動端展示層等。 ·Web層:主要是對訪問控制進行轉發,各類基本引數校驗,或者不復用的業務簡單處理等。 ·S

Java併發程式設計多執行緒程式設計

在上一節,我們介紹了程序與執行緒的概念,接下來介紹如何使用多執行緒(暫不介紹多程序)。 2. Thread物件 每個執行緒都對應一個Thread例項,存在兩種策略使用Thread類來建立併發程式。 直接進行執行緒的建立和管理,也就是當需要開啟一個非同

Java開發程式碼規範異常日誌——日誌規約

文章通過學習《阿里巴巴Java開發手冊》整理 1。應用中不可直接使用日誌系統(Log4j、Logback)中的API,而應依賴使用日誌框架SLF4J中的API,使用門面模式的日誌框架,有利於維護和各個類的日誌處理方式統一。 import org.

java內存模型深入理解java內存模型的系列好文

總結 nal href ola down 深入理解 ati markdown vol 深入理解java內存模型(一)——基礎深入理解java內存模型(二)——重排序深入理解java內存模型(三)——順序一致性深入理解java內存模型(四)——volatile深入理解java

Kafka筆記整理:Kafka Java API使用

大數據 Kafka Java [TOC] Kafka筆記整理(二):Kafka Java API使用 下面的測試代碼使用的都是下面的topic: $ kafka-topics.sh --describe hadoop --zookeeper uplooking01:2181,uplooking0

微信小程式入門學習筆記——阿里雲伺服器PHP MYSQL Apache配置

持續更新 持續學習 感謝原文大佬連結 https://www.linuxidc.com/Linux/2017-08/146220.htm 筆者在阿里雲上買了輕量應用伺服器 學生認證通過以下 便宜的 選擇的CentOS 7.3 64位  https://promot

Retrofit2 學習總結 Rxjava +Retrofit +java web伺服器簡單小例子

通過一段時間的學習,Rxjava Retrofit2終於算是入了門,學習的過程中寫了個簡單的小例子,像我這樣的人學習東西還是喜歡有一個正確的例子用來學習的。 本demo已經上傳到了gitHup: java伺服器 :https://github.com/tanglonghui/Retrofit

C++ Template :初步超程式設計

前言   在上一篇部落格C++ Template (一):模板基礎中,簡單介紹了模板的定義,例項化,特化以及引數包的使用,在一些簡單的場景中,已經可以通過這些知識去大展手腳了。但是想真正發揮Templa

java基礎:談談Java基本資料結構

資料結構是計算機儲存,組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或儲存效率。資料結構往往同高效的檢索演算法和索引技術有關 java中常見的幾種資料結構(也是初級工程師常見面試題)主要是一些常見的容器,它們主要來自於Collec

筆試面試3阿里巴巴2014筆試題詳解(9月22北京

   第一部分 單選題(前10題,每題2分;後10題,每題3分。選對得滿分,選錯倒扣1分,不選得0分) 1、一次記憶體訪問,SSD硬碟訪問和SATA硬碟隨機訪問的時間分別是()    A、幾微秒,幾毫秒,幾十毫秒B、幾十納秒,幾十毫秒,幾十毫秒    C、幾十納秒

idea安裝阿里巴巴Java開發規範外掛

Idea Plugin一,環境Project JDK: 1.7+Gradle: 3.0+(Require JDK1.8+ for gradle)二,安裝方法一:Install from reposito

C++學習 C++面向物件程式設計方法概述

(1)面向過程與面向物件的比較 面向過程程式設計方法(C語言) 分析出要解決所需要的步驟,然後用函式把各步驟逐個實現,執行時依次呼叫各個函式即可。 程式 = 演算法 + 資料結構 面向物件程式設計方法(C++語言) 把問題分解成各個物件,描述各個物件的

筆試面試2阿里巴巴2014秋季校園招聘-軟體研發工程師筆試題詳解

第一部分: 單選題 1. 假設把整數關鍵碼K雜湊到N個槽列表,以下哪些雜湊函式是好的雜湊函式           A: h(K)=K/N;           B: h(K)=1;           C: h(K)=K mod N;           D: h(K)=

阿里巴巴Java開發規範手冊

阿里巴巴 JAVA 開發手冊   1 / 32    Java 開發手冊  版本號 制定團隊 更新日期 備  注  1.0.0 阿里巴巴集團技術部 2016.12.7 首次向 Java 業界公開    一、程式設計規約  (一) 命名規約  1. 【強制】所有程式設計相關命

阿里巴巴JAVA開發規範外掛

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興! 外掛有哪些功能?      阿里技術公眾號於2017年2月9日首次公佈《阿里巴巴Java開發規約》,瞬間引起全民程式碼規範的熱潮,9月底又釋出了PDF的終極版,大家踴躍留言,期待配套的靜

Java壓縮技術 ZIP壓縮——Java原生實現

查過相關資料後才知道,ZIP應該算作歸檔類的壓縮演算法,每一門學科都可深可淺!閒言少敘,先說ZIP壓縮。 zip壓縮需要通過ZipOutputStream 執行write方法將壓縮資料寫到指定輸出流中。 注意,這裡應先使用CheckedOutputStream 指定檔案校驗

Elasticsearch:使用JAVA API實現簡單查詢、聚合查詢

ES版本:2.3.1 JDK:1.8 所需要的jar包請在ES安裝路徑下的jars包中獲得,不要使用其他的jar否則容易出現版本問題! 注意:程式碼中TransportClient client=ESLink.getTransportClient()

Java開發手冊異常日誌日誌規約

【強制】應用中不可直接使用日誌系統 (Log 4 j 、 Logback) 中的 API ,而應依賴使用日誌框架SLF 4 J 中的 API ,使用門面模式的日誌框架,有利於維護和各個類的日誌處理方式統一。 import org.slf4j.Logg