Java基础学习总结(123)——Java异常处理原则
在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异常处理原则相关推荐
- java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)
最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会 直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有"01 ...
- Java基础学习笔记三 Java基础语法
Scanner类 Scanner类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...
- Java基础学习总结(50)——Java事务处理总结
一.什么是Java事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isol ...
- 《Java基础学习笔记》JAVA面向对象之封装
1,封装,是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 2,好外: a)将变化隔离. b)便于使用. c)提高重用性. d)提高安全性 ...
- java中哪些可以私有化_《Java基础学习笔记》JAVA修饰符之私有化(Private)
1,什么是private修饰符? private是权限修饰符,用于修饰类中的成员(成员变量,成员函数). private修饰后的成员只在本类中有效. /* 例: * 将age私有化以后,类以外即使建立 ...
- Java 基础学习-Java语言概述
Java 基础学习 第一章 Java语言概述 回顾java基础知识,进行整理记录. 文章目录 Java 基础学习 前言 一. Java语言发展史(了解) 二.Java语言跨平台原理(理解) 三.JRE ...
- Java基础学习笔记(完结)
Java基础 前言 一.Java基础语法 1.注释 2.标识符 3.数据类型 4.类型转换 5.变量.作用域.常量 6. 运算符 二.Scanner与流程控制 1. Scanner对象 2. 流程控制 ...
- java基础学习-4
Java基础学习-4 static 注意事项 重新认识main方法 继承 小练习 子类到底能继承父类中的哪些内容(第126集)*** 继承过程中成员变量和成员方法的访问特点 小练习 小总结 构造方法的 ...
- JAVA基础学习精简心得笔记整理
JAVA基础学习精简心得笔记整理 配置java环境变量 Java的运行过程 基本数据类型 引用数据类型 逻辑运算符 数组 方法重载 封装 继承 多态 多态的作用 单例设计模式 接口interface ...
- Java基础学习总结(20)——基础语法
2019独角兽企业重金招聘Python工程师标准>>> 一.标识符 二.关键字 三.JAVA基础数据类型 3.1. java常量 3.2. java变量 从本质上来讲,变量其实是内存 ...
最新文章
- 【C++】多线程互斥锁、条件变量
- 对一种自制乐器进行音高修正和音色分析
- python【数据结构与算法】最大上升子序列(简单dp)
- 数据分析能力到底有多重要
- 服务器的共享文件夹怎么隐藏,Server200服务器隐藏共享文件夹 隐藏共享文件的方法...
- Oracle 数据库-分组函数总结
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 21丨报告系统状态的连续日期【难度困难】​
- springboot2.x 从零到一(1、快速创建服务)
- Android sdk下载安装配置教程
- 大数据毕设/课设 - 基于大数据的可视化分析模板
- 没项目经验,这7个前端项目让你脱颖而出
- Python 写入txt文本文件
- vector begin()用法
- 图片太大上传不了怎么缩小?jpg图片压缩大小的方法
- win7 双屏 双工具栏_win7系统设置双屏的操作方法
- cad.net 依照旧样条曲线数据生成一条新样条曲线的代码段. spline生成
- 如何打开电脑c语言窗口,C语言控制台窗口图形界面编程(五). -电脑资料
- Uniswap V2-Core 部分智能合约代码解析
- 用位运算完成大小比较
- 计算机毕业设计SSM大众点评管理系统【附源码数据库】
热门文章
- (c语言)求满足表达式1+2+3+.......+n<=1000的最大的n
- 尝试引用已删除的函数_如何在Excel中使用ROW函数
- java 清空stringbuffer_JAVA中清空StringBuffer变量
- C++新特性探究(八):初始化列表(Initialization List)再探究
- 计算机音乐植物大战僵尸泳池,植物大战僵尸(泳池)
- tableau度量值计算_Tableau可视化(雷达图):漫威英雄能力值
- arm11搭建Linux平台,armlinux软硬件平台搭建.doc
- python猴子选大王_“猴子选大王” 算法 python实现
- 最好的虚拟服务器,最好虚拟主机推荐给大家
- python图纸教程_python入门教程 python入门神图一张