Rumah  >  Soal Jawab  >  teks badan

架构设计 - JAVA端的错误码和错误信息,该设计成全局常量还是枚举值?

Map<String,String> responseInfo = new HashTable<String,String>();
responseInfo.set("FE_PRC_BACK_001","TargetUri is not exist");
//responseInfo.set("FE_XREQ_002","Target Uri of XRequest is Empty.");
//responseInfo.set("FE_REQ_003","The processor flag is incorrect or the BusinessContext time out.");

FE_PRC_BACK_001这样的是错误码,TargetUri is not exist是错误信息,需要以键值对(JSON)的形式响应给浏览器
这时,JAVA端是应该以什么方式来罗列这些错误码和错误信息呢?常量?还是枚举类型?

String FE_PRC_BACK_001 = "TargetUri is not exist";

请教一下各位大神,你们的项目中都是怎么设计的?

黄舟黄舟2722 hari yang lalu975

membalas semua(3)saya akan balas

  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:18:48

    Terdapat 2 penyelesaian berikut:
    1. Bungkusnya ke dalam objek, contohnya:

    public final class Result {
        private Result(String code, String msg){
            this.code = code;
            this.msg = msg;
        }
        
        // ignore setter and getter
        private String code;
        private String msg;
        
        public static final FE_PRC_BACK_001 = new Result("FE_PRC_BACK_001", "TargetUri is not exist");
        
        public static final ...
    }

    2. Gunakan penghitungan untuk melaksanakannya, seperti berikut:

    public enum Result {
        FE_PRC_BACK_001("FE_PRC_BACK_001", "TargetUri is not exist"), 
        ...;
    
        // ignore setter and getter and constructor
        private String code;
        private String msg;
    }

    Idea pelaksanaan 1 dan 2 sebenarnya serupa (idea kod yang diberikan oleh subjek juga serupa, bezanya hanya sama ada menggunakan DTO khusus atau umum Map), tetapi apabila menggunakan penghitungan, terdapat berikut Beberapa tempat yang perlu diberi perhatian:
    Anggapkan bahawa Hasil penghitungan wujud dalam base-api, versi 1.0.0, terdapat projek A dan B masing-masing, projek A bergantung pada projek B, dan kedua-duanya projek A dan B bergantung pada asas-api
    1 Jika projek B menaik taraf asas-api kepada 1.0.1, dan penghitungan baharu ditambahkan pada Hasil, dan antara muka projek B mengembalikan penghitungan baharu, tetapi projek A tidak Apabila menaik taraf asas-api, jika antara muka dipanggil dan penghitungan baharu dikembalikan, pengecualian penyahserikatan akan dilaporkan kerana penghitungan baharu tidak wujud dalam versi lama asas-api
    2 lalai adalah untuk mensirikan penghitungan ke dalam nama pembolehubah penghitungan Jika anda ingin mensirikannya ke dalam format tersuai (contohnya, termasuk mesej), anda perlu menyesuaikan penyeri.

    balas
    0
  • 阿神

    阿神2017-04-18 09:18:48

    Jika semua mesej ralat telah ditentukan, ia boleh ditulis dalam atur cara Ia lebih mudah untuk menggunakan penghitungan daripada pemalar global. Ia masih agak menyakitkan untuk mempunyai pemalar global yang sepadan dengan kod dan mesej ralat.

    Saya paling suka penghitungan Java, terutamanya kerana jenis penghitungan Java boleh dilanjutkan, dibina dan ditulis semulatoString... Kerana penghitungan Java sendiri ialah objek, dan jenis penghitungan itu sendiri ialah kelas A yang agak istimewa.

    Jika mesej ralat anda tidak boleh diperbaiki, ia boleh ditambah semasa proses permohonan dan disimpan dalam pangkalan data. Kemudian anda perlu menulis satu set kelas pengurusan khas untuk mengendalikannya dan menggunakan HashTable atau HashMap untuk melaksanakannya. Tetapi saya rasa masalah anda tidak begitu rumit.

    balas
    0
  • PHPz

    PHPz2017-04-18 09:18:48

    Letakkan kunci yang salah dalam penghitungan java, dan kemudian letakkan pemetaan antara kunci yang salah dan maklumat yang salah dalam fail luaran, seperti fail sifat. Semasa runtime, cuma ambil semula teks ralat daripada fail dalam masa nyata berdasarkan kekunci penghitungan ralat Oleh kerana ralat tidak kerap berlaku, seharusnya tiada masalah membaca maklumat ralat dalam masa nyata, anda juga boleh membaca semua ralat apabila program bermula. Maklumat dibaca dan dicache untuk meningkatkan prestasi.

    balas
    0
  • Batalbalas