展开全部

最熟悉的陌生人:异常

异常的类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开发中,大家处理异常的原则是什么,是如何处理的?相关推荐

  1. java 开发工具_Java开发工具和环境,你了解多少?

    Java作为今年来最热门的编程语言之一,越来越多的人选择Java,但对于一些初入门的小白来说,在选择和安装开发工具和环境的时候,会遇见很多的问题. 今天就给大家来分享一些实用的Java开发工具和环境, ...

  2. java jdk包_Java开发工具包JDK的简介

    Java开发工具包JDK的简介 Java 开发工具包是 Java 环境的核心组件,并提供编译.调试和运行一个Java 程序所需的所有工具,可执行文件和二进制文件.JDK 是一个平台特定的软件,有针对 ...

  3. java swt 计算器_JAVA开发简易计算器界面-SWT

    大家好,我是成都[LD],博客四年前就申请了,一直没打理,最近正好有时间,遂萌生了写技术博客的念头.我不得不感慨现在新技术更新很快,一不小心,就感觉自身就Out了.记得一年前,当时我也是在51CTO上 ...

  4. java jdk目录_Java开发工具包JDK安装和目录介绍

    1. 找到JDK的exe可执行文件 2. 双击安装,接受windows操作系统的安全警告,点击运行 3. 点击下一步 4. 如果需要更改安装路径,请点击更改,否则直接下一步 5. 等待安装 6. 安装 ...

  5. java五大原则_Java面向对象的三大特征和五大原则

    Java面向对象的三大特征 封装 封装(Encapsulation)是指属性私有化,根据需要提供setter和getter方法来访问属性.即隐藏具体属性和实现细节,仅对外开放接口,控制程序中属性的访问 ...

  6. java的成员方法_java编程中的成员方法是什么?

    DIEA 成员方法描述对象所具有的功能或操作,反映对象的行为,是具有某种相对独立功能的程序模块.它与过去所说的子程序.函数等概念相当.一个类或对象可以有多个成员方法,对象通过执行它的成员方法对传来的消 ...

  7. java swing背景_java Swing中添加背景图片(总结)

    在java GUI图形化设计中,Swing组件添加背景图片主要有两中情况:1,在Jpanl面板中添加背景图片,2,在jLable中添加背景图片 首先介绍一种最巧妙的背景图片添加方法, 1.利用JLab ...

  8. java静态引用_Java开发中静态方法引用和实例方法引用案例详细讲解

    Java开发 前言 在Java的日常开发中静态方法引用和实例方法引用在很多地方都会用到,可以说是万金油,但是你真的掌握了吗?下面就由小编给大家做一个比较细想的讲解,废话不多说现在开始把. 正文 大家对 ...

  9. java 项目 预警_java开发中的常见代码黄线预警

    java日常开发中,经常会碰到开发工具idea.Eclipse等在一些代码中报黄线,这对于很多具有强迫症的同学来说,也是一件很头疼的事,尤其是编码不注意规范的同学来说. 下面我就列举一些常见的黄线预警 ...

最新文章

  1. Oracle11g 备份和恢复的方法
  2. CRM WebClient UI错误消息的两种显示方式比较
  3. 最佳圆角字体,设计师的最爱
  4. DARPA Grand挑战赛Overbot的软硬件架构,轨迹规划和车辆控制
  5. 域控查看ldap端口命令_LDAP基础安装与简单入门使用
  6. 222 Count Complete Tree Nodes
  7. javapythonc就业人数比例_P100 统计各年龄段的人数
  8. 关于julia的路径问题,往往很重要!
  9. 【跟我一起学Linux之Ubuntu】-概述与安装配置笔记
  10. iphone12文件管理连接服务器,iPhone手机打开服务器功能,和Windows电脑互传文件方法...
  11. 【线代】齐次方程组的解
  12. 产品读书《极简生活法则》
  13. 圣诞之歌:クリスマス タイム和My Baby Grand~ぬくもりが欲しくて~ ZARD
  14. 【安全牛学习笔记】 端口扫描
  15. 大数据在各领域应用之销量预测
  16. 编译原理课堂笔记(1)编译概述
  17. Java设计模式之简单工厂模式实验(软件工程综合实践课程第二周)
  18. mui可否使用php网页,使用MUI框架如何加载外部网页或服务器数据
  19. DataTables+Ajax分页简单应用
  20. 【一篇看全】工业相机常用数据传输协议速率对比(CameraLink,CXP,1/10/100GigE,USB)

热门文章

  1. php多线程是什么意思,多线程是什么意思
  2. java外部类_Java里什么叫内部类什么叫外部类
  3. rgb 灰色_金属+RGB+无线,我要买爆这款海盗船VIRTUOSO鉴赏家游戏耳机
  4. c#字符相似度对比通用类
  5. 《数据结构与算法分析-C语言描述》习题2.6
  6. Centos7.x Hadoop 3.x HDFS 写入文件
  7. java在文档末尾添加_如何在打开表单后将子文件添加到Word文档的末尾?
  8. nsga2算法c++实现_Bellman-Ford算法
  9. scala与java的区别_Scala学习笔记及与Java不同之处总结
  10. html教程padding,HTML CSS——margin和padding的学习