在Java开发过程中,见过很多人在进行异常处理的时候,直接一个 e.printStackTrace() 就完成了,这是一种非常粗陋的做法,首先会导致应用日志的大量错误信息,而很多时候你都不知道这些错误信息因何发生;再者,反应到用户端将直接导致用户无法获取操作的结果以及失败的原因。
以下 15 条异常处理的原则来自国外的博客:
不用使用异常来管理业务逻辑,应该使用条件语句。如果一个控制逻辑可通过 if-else 语句来简单完成的,那就不用使用异常,因为异常会降低代码的可读性和性能,例如一些 null 的判断逻辑、除0的控制等等;
异常的名字必须清晰而且有具体的意思,表示异常发生的问题,例如 FileNotFoundException 就很清晰直观
当方法判断出错该返回时应该抛出异常,而不是返回一些错误值,因为错误值难以理解而且不够直观,例如抛出 FileNotFoundException 异常,而不是返回 -1 或者 -2 之类的错误值。
应该捕获指定的异常,而不是 catch(Exception e) 了事,这对性能、代码的可读性以及诸多方面都有好处
Null 的判断逻辑并不是一成不变的,当方法允许返回 null 的时候使用 if-else 控制逻辑,否则就抛出 NullPointerException
尽量不要二次抛出异常,如果非得这么做的话,抛出同一个异常示例,而不是重新构建一个异常对象,这对性能是有帮助的,而且外层调用者可获取真实的异常信息
定义你自己的异常类层次,例如 UserException 和 SystemException 分别代表用户级别

Java基础学习总结(123)——Java异常处理原则相关推荐

  1. java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)

    最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会 直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有"01 ...

  2. Java基础学习笔记三 Java基础语法

    Scanner类 Scanner类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...

  3. Java基础学习总结(50)——Java事务处理总结

    一.什么是Java事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isol ...

  4. 《Java基础学习笔记》JAVA面向对象之封装

    1,封装,是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 2,好外:        a)将变化隔离.        b)便于使用.        c)提高重用性.        d)提高安全性 ...

  5. java中哪些可以私有化_《Java基础学习笔记》JAVA修饰符之私有化(Private)

    1,什么是private修饰符? private是权限修饰符,用于修饰类中的成员(成员变量,成员函数). private修饰后的成员只在本类中有效. /* 例: * 将age私有化以后,类以外即使建立 ...

  6. Java 基础学习-Java语言概述

    Java 基础学习 第一章 Java语言概述 回顾java基础知识,进行整理记录. 文章目录 Java 基础学习 前言 一. Java语言发展史(了解) 二.Java语言跨平台原理(理解) 三.JRE ...

  7. Java基础学习笔记(完结)

    Java基础 前言 一.Java基础语法 1.注释 2.标识符 3.数据类型 4.类型转换 5.变量.作用域.常量 6. 运算符 二.Scanner与流程控制 1. Scanner对象 2. 流程控制 ...

  8. java基础学习-4

    Java基础学习-4 static 注意事项 重新认识main方法 继承 小练习 子类到底能继承父类中的哪些内容(第126集)*** 继承过程中成员变量和成员方法的访问特点 小练习 小总结 构造方法的 ...

  9. JAVA基础学习精简心得笔记整理

    JAVA基础学习精简心得笔记整理 配置java环境变量 Java的运行过程  基本数据类型 引用数据类型 逻辑运算符 数组 方法重载 封装 继承 多态 多态的作用 单例设计模式 接口interface ...

  10. Java基础学习总结(20)——基础语法

    2019独角兽企业重金招聘Python工程师标准>>> 一.标识符 二.关键字 三.JAVA基础数据类型 3.1. java常量 3.2. java变量 从本质上来讲,变量其实是内存 ...

最新文章

  1. 【C++】多线程互斥锁、条件变量
  2. 对一种自制乐器进行音高修正和音色分析
  3. python【数据结构与算法】最大上升子序列(简单dp)
  4. 数据分析能力到底有多重要
  5. 服务器的共享文件夹怎么隐藏,Server200服务器隐藏共享文件夹 隐藏共享文件的方法...
  6. Oracle 数据库-分组函数总结
  7. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 21丨报告系统状态的连续日期【难度困难】​
  8. springboot2.x 从零到一(1、快速创建服务)
  9. Android sdk下载安装配置教程
  10. 大数据毕设/课设 - 基于大数据的可视化分析模板
  11. 没项目经验,这7个前端项目让你脱颖而出
  12. Python 写入txt文本文件
  13. vector begin()用法
  14. 图片太大上传不了怎么缩小?jpg图片压缩大小的方法
  15. win7 双屏 双工具栏_win7系统设置双屏的操作方法
  16. cad.net 依照旧样条曲线数据生成一条新样条曲线的代码段. spline生成
  17. 如何打开电脑c语言窗口,C语言控制台窗口图形界面编程(五). -电脑资料
  18. Uniswap V2-Core 部分智能合约代码解析
  19. 用位运算完成大小比较
  20. 计算机毕业设计SSM大众点评管理系统【附源码数据库】

热门文章

  1. (c语言)求满足表达式1+2+3+.......+n<=1000的最大的n
  2. 尝试引用已删除的函数_如何在Excel中使用ROW函数
  3. java 清空stringbuffer_JAVA中清空StringBuffer变量
  4. C++新特性探究(八):初始化列表(Initialization List)再探究
  5. 计算机音乐植物大战僵尸泳池,植物大战僵尸(泳池)
  6. tableau度量值计算_Tableau可视化(雷达图):漫威英雄能力值
  7. arm11搭建Linux平台,armlinux软硬件平台搭建.doc
  8. python猴子选大王_“猴子选大王” 算法 python实现
  9. 最好的虚拟服务器,最好虚拟主机推荐给大家
  10. python图纸教程_python入门教程 python入门神图一张