Java异常

1、异常的分类:

① 非运行时异常(Checked Exception)

Java中凡是继承自Exception但不是继承自RuntimeException的类都是非运行时异常

② 运行时异常(Runtime Exception/Unchecked Exception)

a) RuntimeException类直接继承自Exception类,称为运行时异常。Java中所有的运行时异常都直接或间接的继承自RuntimeException.

Java中所有的异常类都直接或间接的继承自Exception。

2、异常的处理:

对应非运行时异常,必须对其进行处理。处理方式有两种:

【1】使用try…catch…finally语句块进行捕获
【2】在产生异常的方法所在的方法声明throws Exception (将异常抛给JVM处理)

对于运行时异常,可以不对其进行处理,也可以对其进行处理。一般情况下都不对其进行处理。

注:异常使用注意事项

【1】当使用多个catch语句块来捕获异常时,需要将父类的catch语句块放到子类型的catch块之后,

这样才能保证后续的catch可能被执行,否则子类型的catch将永远无法到达,Java编译器会报编译错误。

【2】如果try语句块中存在return语句,那么首先会执行finally语句块中的代码,然后才返回。

【3】如果try语句块中存在System.exit(0)语句,那么就不会执行finally语句块的代码了,因为System.exit(0)会终止当前运行的JVM。

程序在JVM终止前结束执行。

2、自定义异常:--目的设置自定义抛出异常信息

实现自定义异常类的方法如下:

【1】。类java.lang.Throwable是所有异常类的基类,它包括两个子类:Exception和Error,

Exception类用于描述程序能够捕获的异常,如ClassNotFoundException。

Error类用于指示合理的应用程序不应该试图捕获的严重问题,如虚拟机错误VirtualMachineError

【2】。自定义异常类可以继承Throwable类或者Exception,而不要继承Error类。自定义异常类之间也可以有继承关系

另:需要为自定义异常类设计构造方法,以方便构造自定义异常对象

注意:自定义的异常必须是继承自RuntimeException的才可以抛出。其他Exception的不可以的

简单实例:

【1】编写一个自定义异常类

public class MyException extends RuntimeException {
private static final long serialVersionUID = 1L;
/**
* 错误编码
*/
private String errorCode;
/**
* 消息是否为属性文件中的Key
*/
private boolean propertiesKey = true; /**
* 构造一个基本异常.
*/
public MyException(String message)
{
super(message);
}
/**
* 构造一个基本异常
*/
public MyException(String errorCode, String message)
{
this(errorCode, message, true);
} /**
* 构造一个基本异常.
*/
public MyException(String errorCode, String message, Throwable cause)
{
this(errorCode, message, cause, true);
}
/**
* 构造一个基本异常.
*/
public MyException(String errorCode, String message, boolean propertiesKey)
{
super(message);
this.setErrorCode(errorCode);
this.setPropertiesKey(propertiesKey);
}
/**
* 构造一个基本异常.
*/
public MyException(String errorCode, String message, Throwable cause, boolean propertiesKey)
{
super(message, cause);
this.setErrorCode(errorCode);
this.setPropertiesKey(propertiesKey);
}
/**
* 构造一个基本异常.
*/
public MyException(String message, Throwable cause)
{
super(message, cause);
} public String getErrorCode()
{
return errorCode;
} public void setErrorCode(String errorCode)
{
this.errorCode = errorCode;
} public boolean isPropertiesKey()
{
return propertiesKey;
} public void setPropertiesKey(boolean propertiesKey)
{
this.propertiesKey = propertiesKey;
}
}

【2】编写一个测试类,测试自定义异常

public class TestException {
public static void main(String[] args) {
String[] sexs = {"男性","女性","中性"};
for(int i = 0; i < sexs.length; i++){
if("中性".equals(sexs[i])){
throw new MyException("你是中性!");
}else{
System.out.println(sexs[i]);
}
}
}
}

【3】编写结果

3、ERRO与Exception区别

Error和Exception都是实现了Throwable接口的,二者的区别主要在于:程度的不同。

【1】Error是系统机器的错误,比如虚拟机内存溢出等严重问题,通常出现系统异常的时候项目都已经要停止运行的了。

一般不会对error进行捕捉和处理,因为这些问题不是代码可以修复的。

【2】Exception一般是运行过程中出现的逻辑错误、误操作等轻度的问题,不会导致项目停止运行,只不过引发异常的操作不能正常完成而已。

对于异常,我们一般进行捕捉处理,转化为runtime异常的子类进行抛出,在过滤器统一进行处理以提供良好的用户体验并维持项目继续运。

5、项目应用

参考博客:http://blog.csdn.net/u010479322/article/details/51746927

http://blog.csdn.net/zhouyong80/article/details/1907805

https://www.cnblogs.com/ygj0930/p/6403033.html

https://www.cnblogs.com/ygj0930/p/6403033.html

Java基础/Java异常的更多相关文章

  1. java基础之异常 · fossi

    在开发中,异常处理是一个不可绕开的话题,我们对于异常的处理已经非常熟练了,对于异常本身的概念.用法等不再赘述了,直接结合面试问题来加深对异常的理解吧. Throwable 可以用来表示任何可以作为异常 ...

  2. Java基础-Java中23种设计模式之常用的设计模式

    Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...

  3. java基础---->java中正则表达式二

    跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...

  4. Java基础-Java中的堆内存和离堆内存机制

    Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  5. Java基础-Java中的内存分配与回收机制

    Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二.

  6. Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock)

    Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在学习Java的之前,你可能已经听说过读 ...

  7. Java基础-Java中的并法库之线程池技术

    Java基础-Java中的并法库之线程池技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是线程池技术 二.

  8. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  9. Java基础-Java数据类型

    Java基础-Java数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据类型的作用 数据类型就是一组值,以及这一组值上的操作,数据类型可以决定数据的存储方式,取值范围 ...

  10. 【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!

    目录 1.异常 1.1 异常概念 1.2 异常体系 1.3 异常分类 1.4 异常的产生过程解析 2. 异常的处理 2.1 抛出异常throw 2.2 Objects非空判断 2.3 声明异常thro ...

随机推荐

  1. 总结c语言

    这个月的总结,我学到的知识虽然不是很多,学的很慢,也不懂什么意思,也没有多加去复习,也许这就是不去敲代码的代价,也只会简单的代码,学的时候真的是找不到思路,觉得这代码跟着老师讲课照着输入进去就可以了, ...

  2. QT:QSS字体设置

    css,qss font-family常用的黑体宋体等字体中英文对照 当qss使用中文设置字体时,无法生效.因为qss不支持中文设置字体,所以下面给出一些常用的黑体宋体字体中英文对照. 微软雅黑: M ...

  3. jquery timeStamp属性 语法

    jquery timeStamp属性 语法 作用:timeStamp 属性包含从 1970 年 1 月 1 日到事件被触发时的毫秒数.直线模组 语法:event.timeStam 参数: 参数 描述 ...

  4. jQuery_CSS类操作

    下面讲述jQuery操作css类,进行类的添加,移除,以及前两项功能的结合操作. <!DOCTYPE html> <html> <head> <meta ch ...

  5. GDB简单调试

    最近在开始刷LeetCode,也开始在Linux上写代码,直接gcc编译,在调试的时候,需要用到gdb调试,所以在这里会不定期更新我学习到的gdb调试. 先编译成可执行文件 首先我们使用g++或者gc ...

  6. R_Studio(教师经济信息)逻辑回归分析的方法和技巧

    使用R语言对"教师经济信息"进行逻辑回归分析 (1)按3:1的比例采用简单随机抽样方法,创建训练集和测试集 (2)用训练集创建逻辑回归模型 (3)用测试集预测贷款结果,并用tabl ...

  7. RedisTemplate与zset

      Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串).List(列表).Set(集合).Hash(散列)和 Zset(有 ...

  8. @Configuration与@Bean

    1,@Configuration与@Bean   @Configuration: 告诉Spring这是一个配置类,配置类==配置文件. @Configuration==beans.xml @Bean: ...

  9. postman 测试api接口

    安装:https://www.getpostman.com/ 谷歌插件安装需要翻墙才能访问,那么直接去官网下载pc端 代码图片: 非常简单 post: 代码图片: 剪头地方,必选

  10. UTC日期转时间戳

    网上的方法用mktime来转换日期到时间戳,会被当前环境的时区影响,现在这么做,用UTC的日期转时间戳这样要转换各地的时区也简单 unsigned long utcMktime(const unsig ...