异常

异常

异常就是程序在运行时产生的异常情况。

异常的由来

问题也是现实生活中的具体事物,也可以通过java 类的形式进行描述,并封装成对象。异常就是java 对不正常情况进行描述后的对象的体现。

异常体系

        Throwable

            |--Error

            |--Exception

                |--RuntimeException

Error 与Exception区别

    Error表示严重的异常,是无法处理的。

Exception是指可以处理的,即要么向上抛要么进行捕获

异常体系特点

异常体系中的所有类以及建立的对象都具有可抛性,也就是可以被 throws 和 throw 关键字所操作,且只有异常体系具备这个特点。

throws 和 throws 的用法

throw定义在函数内,用于抛出异常对象。

throws定义在函数上,用于抛出异常类,当抛出多个异常时需要用逗号进行分割。

throw 和throws注意事项

当函数内容有throw抛出异常对象,并且此时未对其进行 try catch处理,此时必须在函数上用throws声明此异常或者其父类异常,否则编译失败。这种情况中RuntimeException除外,也就是函数内如果抛出的是RuntimeException异常,函数上可以不用声明该异常。

函数调用者任务

当函数声明声明了异常,那么调用者在调用该函数时就必须进行异常处理,处理方式有两种:继续向上抛、进行try catch处理。

异常处理的两种方式

编译时被检测异常

该异常在编译时,如果没有处理(处理包括两种方式,上文有说明)则编译失败。该异常被标识,代表这个异常是可以处理的。

运行时异常(编译时不检测)

在编译时,不需要处理,编译器不进行检查。该异常的发生,建议不处理,一旦发生该类异常,就应该让程序停止运行,对需要更正的代码进行修正。

异常处理语句

try

{

需要被检测的代码;

}

catch ()

{

处理异常的代码;

}

finally

{

一定会执行的代码;

}

有三个结合格式:

1.    try

{

}

catch ()

{

}

2.    try

{

}

finally

{

}

3.    try

{

}

catch ()

{

}

finally

{

}

异常处理注意事项

1、finally中通常定义的关闭资源的代码,因为自要必须释放。

2、finally只有一种情况不会执行。当执行到System.exit(0);时,finally语句不会执行

自定义异常

定义异常类继承Exception或者RuntimeException。目的:

1、为了让该自定义类具备可抛性

2、让该类聚类操作异常的共性方法。

当要自定义异常信息时,可以使用父类已经定义好的功能。异常信息传递给父类的构造函数。如下:

MyException(String message)

{

super(message);

}

自定义异常思想

自定义异常信息思想是按照java面向对象思想进行的,将程序中出现的特有信息进行封装。

异常的好处

1、将问题进行封装

2、将正常流程代码和问题代码进行分析,方便与阅读。

异常处理原则

1、异常处理有两种方式:try catch或者thorws。

2、调用到抛出异常功能时,抛出几个异常就要处理一个异常。

3、多个catch块,父类的catch块一点要放到catch块的最后,否则编译失败。

4、catch中,需要针对性的进行异常处理,不要简单的打印异常信息。

5、当捕获到的异常本功能处理不了时可以继续在catch中抛出。例如:

try

{

throw new AException();

}

catch (AException e)

{

throw e;

}

如果异常处理不了,但并不属于该功能出现的异常,可以将异常进行转化后再抛出和该功能相关的异常。如:

try

{

throw new AException();

}

catch (AException e)

{

// 对AException处理。

}

比如,汇款的例子,一旦汇款失败,这时首先会将异常信息进行处理(将汇款失败的金额返回),然后给用户以提示(相当于转化后的结果)。

异常的注意事项

在子父类覆盖时:

1、子类抛出的异常必须是父类异常的子类或者子集

2、如果父类或者接口没有抛出异常,子类覆盖时出现异常,只能try而不能向上抛。

十二、Java基础---------异常处理机制的更多相关文章

  1. Java基础-异常处理机制 及异常处理的五个关键字:try/catch/finally/throw /throws

    笔记: /** 异常处理机制: 抓抛模型 * 1."抛", 一旦抛出,程序终止! printStackTrace()显示异常路径! * 2."抓", 抓住异常 ...

  2. Java实习生常规技术面试题每日十题Java基础(二)

    目录 1. JAVA 的反射机制的原理. 2.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 3.如何将String类型转化成Number类型. 4.什 ...

  3. Java实习生常规技术面试题每日十题Java基础(八)

    目录 1.解释内存中的栈(stack).堆(heap)和静态区(static area)的用法. 2.怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串? 3.运行时异常与受检异常有 ...

  4. Java实习生常规技术面试题每日十题Java基础(六)

    目录 1.在Java语言,怎么理解goto. 2.请描述一下Java 5有哪些新特性? 3.Java 6新特性有哪些. 4.Java 7 新特性有哪些. 5.Java 8 新特性有哪些. 6.描述Ja ...

  5. Java实习生常规技术面试题每日十题Java基础(五)

    目录 1.启动一个线程是用run()还是start()? . 2.线程的基本状态以及状态之间的关系. 3.Set和List的区别,List和Map的区别? 4.同步方法.同步代码块区别? 5.描述Ja ...

  6. Java实习生常规技术面试题每日十题Java基础(四)

    目录 1.String 和StringBuffer的区别. 2.数组有没有length()这个方法? String有没有length()这个方法? 3.final, finally, finalize ...

  7. Java实习生常规技术面试题每日十题Java基础(三)

    目录 1.是否可以从一个static方法内部发出对非static方法的调用? 2.Integer与int的区别? 3.Overload和Override的区别.参数列表相同,返回值不同的方法,是否是重 ...

  8. Java基础-类加载机制与自定义类Java类加载器(ClassLoader)

    Java基础-类加载机制与自定义类Java类加载器(ClassLoader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于类加载器的概念和分类我就不再废话了,因为我在之前的笔 ...

  9. Java实习生常规技术面试题每日十题Java基础(七)

    目录 1. Java设计模式有哪些? 2.GC是什么?为什么要有GC? 3. Java中是如何支持正则表达式. 4.比较一下Java和JavaSciprt. 5.Math.round(11.5) 等于 ...

随机推荐

  1. First day in 阿里

    周五上午10点半的飞机,为了便宜选了CA的空客320的飞机,结果体验很差.飞机涂了层风骚的粉紫色,机内较旧,也很小,经过所谓的头等舱简直惨不忍睹.对比起去年飞去北京乘的波音真是没法比,波音上每个人都有 ...

  2. 继承(JAVA)

    继承是面向对象最显著的一个特性.继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力. 一.继承的基本语法: 在Java语言中,用extends关键字表示一个类继承了另 ...

  3. AlertDialog使用时遇到问题

    1.其内de子控件高宽度为0? AlertDialog.Builder builder = new AlertDialog.Builder(StoryActivity.this); View view ...

  4. [LintCode] 3Sum 三数之和

    Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...

  5. [LintCode] Maximal Rectangle 最大矩形

    Given a 2D boolean matrix filled with False and True, find the largest rectangle containing all True ...

  6. markdown语法学习笔记

    ##1.**标题** # 一级标题 ## 二级标题   ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 ##2.**加粗** 首尾各加两个*号   ##3.*斜字体 ...

  7. get_magic_quotes_gpc()

    php get_magic_quotes_gpc()函数:http://www.cnblogs.com/lsk/archive/2008/05/05/1184117.html 以及addslashes ...

  8. JAVA6开发WebService (二)——JAX-WS例子

    转载自http://wuhongyu.iteye.com/blog/807836 上一篇写了个最简单的小例子,只是为了说明JAVA6开发Web Service很方便,这一篇稍微深入一点,写个稍微有点代 ...

  9. Java面试题大全(二)

    41.是否可以继承String类? String类是final类故不可以继承. 42.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? switch(expr1 ...

  10. 怎么启动或停止mysql服务

    在linux下,  启动mysql用 service mysql start   停止用 service mysql stop 在windows下, 启动用 net start mysql    停止 ...