java开发原则_java开发中,大家处理异常的原则是什么,是如何处理的?
展开全部
最熟悉的陌生人:异常
异常的类e5a48de588b63231313335323631343130323136353331333361326365型Throwable
— Exception
—- RuntimeException
— Error
需要注意的是,RuntimeException及其子类不需要在方法签名中显示注明异常抛出。
例如:
void runtimeExceptionMethod1() {
throw new RuntimeException();
}
和:
void runtimeExceptionMethod2() throws RuntimeException {
throw new RuntimeException();
}
都可以,但是很多时候建议注明异常抛出。
异常的方法签名和子类
方法签名的异常定义等于或者是实际抛出异常的父类
void ioExceptionMethod1() throws IOException {
throw new IOException();
}
或者
void ioExceptionMethod2() throws IOException {
throw new FileNotFoundException();
}
都是可以的。
RuntimeException的特殊性
可以使用try-finally这种形式。
void runtimeExceptionMethod3() {
try {
runtimeExceptionMethod1();
} finally {
}
}
这个时候,不会处理异常,异常仍然会抛出给调用者。
异常处理分为两种方式:
1处理
2抛给调用者
最常见的形式:
try {
} catch(Exception e) {
}
如果有额外的硬件资源或者锁需要释放的时候,需要增加finally.
try {
} catch(Exception e) {
} finally() {
}
举几个例子:
第一个例子:文件流的使用和关闭:
File realFile = new File(dir, "laplace.demo");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(realFile);
fos.write(data);
fos.flush();
} catch (Exception var9) {
var9.printStackTrace();
} finally {
Utilities.silentlyClose(fos);
}
第二个例子:锁的释放
Lock lock = null;
try{
lock = new ReentrantLock();
lock.lock();
// Some sentence may cause exception.
} catch (Exception e){
} finally {
if(lock != null){
lock.unlock();
}
}
处理的原则
在讲述了基本的原理后,讲解一下处理的原则。
调用者是否关心异常发生的后果
如果异常发生后,会要有不同的处理逻辑,那么被调用者应该将异常抛出。
作为sdk组件而言,本身无法知道纷繁复杂的需求,所以通常是需要将异常抛出,而不是自己处理。
对于业务层代码而言,更多时候需要考虑到借口的友善性,可能会做出异常的处理,而不是再向调用者抛出。
此外,还有一些Java规范基本的约定:
例如通常只建议处理Exception,而不建议处理Error。
但是在实际的产品过程中,只要不是完全不能运行的情况,我们希望给用户的感觉是,似乎发生了部分错误,但是整个程序还在运行,并没有奔溃。
所以,对于异常类型的实际处理,还取决于产品逻辑。
java开发原则_java开发中,大家处理异常的原则是什么,是如何处理的?相关推荐
- java 开发工具_Java开发工具和环境,你了解多少?
Java作为今年来最热门的编程语言之一,越来越多的人选择Java,但对于一些初入门的小白来说,在选择和安装开发工具和环境的时候,会遇见很多的问题. 今天就给大家来分享一些实用的Java开发工具和环境, ...
- java jdk包_Java开发工具包JDK的简介
Java开发工具包JDK的简介 Java 开发工具包是 Java 环境的核心组件,并提供编译.调试和运行一个Java 程序所需的所有工具,可执行文件和二进制文件.JDK 是一个平台特定的软件,有针对 ...
- java swt 计算器_JAVA开发简易计算器界面-SWT
大家好,我是成都[LD],博客四年前就申请了,一直没打理,最近正好有时间,遂萌生了写技术博客的念头.我不得不感慨现在新技术更新很快,一不小心,就感觉自身就Out了.记得一年前,当时我也是在51CTO上 ...
- java jdk目录_Java开发工具包JDK安装和目录介绍
1. 找到JDK的exe可执行文件 2. 双击安装,接受windows操作系统的安全警告,点击运行 3. 点击下一步 4. 如果需要更改安装路径,请点击更改,否则直接下一步 5. 等待安装 6. 安装 ...
- java五大原则_Java面向对象的三大特征和五大原则
Java面向对象的三大特征 封装 封装(Encapsulation)是指属性私有化,根据需要提供setter和getter方法来访问属性.即隐藏具体属性和实现细节,仅对外开放接口,控制程序中属性的访问 ...
- java的成员方法_java编程中的成员方法是什么?
DIEA 成员方法描述对象所具有的功能或操作,反映对象的行为,是具有某种相对独立功能的程序模块.它与过去所说的子程序.函数等概念相当.一个类或对象可以有多个成员方法,对象通过执行它的成员方法对传来的消 ...
- java swing背景_java Swing中添加背景图片(总结)
在java GUI图形化设计中,Swing组件添加背景图片主要有两中情况:1,在Jpanl面板中添加背景图片,2,在jLable中添加背景图片 首先介绍一种最巧妙的背景图片添加方法, 1.利用JLab ...
- java静态引用_Java开发中静态方法引用和实例方法引用案例详细讲解
Java开发 前言 在Java的日常开发中静态方法引用和实例方法引用在很多地方都会用到,可以说是万金油,但是你真的掌握了吗?下面就由小编给大家做一个比较细想的讲解,废话不多说现在开始把. 正文 大家对 ...
- java 项目 预警_java开发中的常见代码黄线预警
java日常开发中,经常会碰到开发工具idea.Eclipse等在一些代码中报黄线,这对于很多具有强迫症的同学来说,也是一件很头疼的事,尤其是编码不注意规范的同学来说. 下面我就列举一些常见的黄线预警 ...
最新文章
- Oracle11g 备份和恢复的方法
- CRM WebClient UI错误消息的两种显示方式比较
- 最佳圆角字体,设计师的最爱
- DARPA Grand挑战赛Overbot的软硬件架构,轨迹规划和车辆控制
- 域控查看ldap端口命令_LDAP基础安装与简单入门使用
- 222 Count Complete Tree Nodes
- javapythonc就业人数比例_P100 统计各年龄段的人数
- 关于julia的路径问题,往往很重要!
- 【跟我一起学Linux之Ubuntu】-概述与安装配置笔记
- iphone12文件管理连接服务器,iPhone手机打开服务器功能,和Windows电脑互传文件方法...
- 【线代】齐次方程组的解
- 产品读书《极简生活法则》
- 圣诞之歌:クリスマス タイム和My Baby Grand~ぬくもりが欲しくて~ ZARD
- 【安全牛学习笔记】 端口扫描
- 大数据在各领域应用之销量预测
- 编译原理课堂笔记(1)编译概述
- Java设计模式之简单工厂模式实验(软件工程综合实践课程第二周)
- mui可否使用php网页,使用MUI框架如何加载外部网页或服务器数据
- DataTables+Ajax分页简单应用
- 【一篇看全】工业相机常用数据传输协议速率对比(CameraLink,CXP,1/10/100GigE,USB)
热门文章
- php多线程是什么意思,多线程是什么意思
- java外部类_Java里什么叫内部类什么叫外部类
- rgb 灰色_金属+RGB+无线,我要买爆这款海盗船VIRTUOSO鉴赏家游戏耳机
- c#字符相似度对比通用类
- 《数据结构与算法分析-C语言描述》习题2.6
- Centos7.x Hadoop 3.x HDFS 写入文件
- java在文档末尾添加_如何在打开表单后将子文件添加到Word文档的末尾?
- nsga2算法c++实现_Bellman-Ford算法
- scala与java的区别_Scala学习笔记及与Java不同之处总结
- html教程padding,HTML CSS——margin和padding的学习