java--异常及异常的处理机制

原创 2015年07月09日 14:10:26

java异常机制

一:异常的概念:异常是程序运行过程过程出现的各种各样的错误。在java中分为Exception和Error两种;

异常处理机制:异常处理机制就是处理异常的,,就是要告诉开发人员,你的程序出现了不正常的情况,请注意处理。一门成熟的编程语言必须要有完整体系的异常处理机制,异常处理机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,更重要的是可以提高程序的健壮性。 


二:java异常的体系:

可以用一张图来表示:如下图:(ps:图片来源于网络)


下面我分别简单介绍下每一部分的含义:

(1)Throwable:在java语言里,万事万物都看作对象,自然异常也不例外,在java中,一样用Throwable来表示。他封装了异常的各种信息。Throwable又分为两种,Error好人Exception

(2)Error:(错误)是异常的一种形式,这类异常代表着很严重的意外。一般是指java虚拟机相关的问题,例如系统崩溃、虚拟机出错误、动态链接失败等,还有其他的如数组长度过大,输入参数非法等等,这种错误无法恢复或不可能捕获,将导致应用程序中断,通常应用程序无法处理这些错误,所以程序不应该捕获这种异常,而应该是程序员自己来调试代码或则输入的数据等等。

(3)Exception这种异常是我们研究的重点,他指的是合理的应用程序出现了人为的错误。可以用代码老捕获之,以提高代码的健壮性。他拥有很多的实现类,代表着每一种不同的异常形式,常见的有:NullPionterException,ClassNotFoundException等等。

(4)java中异常分两类,一类是需要处理的(Checked exceptions), 一类是不需要处理的(Unchecked exceptions)。后者在java异常里用RuntimeEcption来表示。
是否需要处理是指:你程序中抛出的异常客户端是否需要处理,是否有能力处理。 


三:java异常的代码处理:

在java中处理异常要用到一下的关键字,try、catch、finally、throw、throws下面我来逐一打得介绍下:

1.try:它里面放置可能引发异常的代码,即将程序中可能出现问题的代码全部放在try{}语句块里;

格式:try{

可能引发异常的代码

}

         2.catch:用于捕获try语句块里可能抛出的异常,可以有多个catch语句块,格式如下:

catch(XXXException e){调用e的一些方法,显示异常信息等}

异常对象包含的常用方法:(其中前两种方法更为常见)

2.1.      printStackTrace():将该异常的跟踪栈信息输出到标准错误输出。  

2.2.      getMessage();返回该异常的详细描述字符

2.3.       printStackTrace(PrintStream s):将该异常的跟踪栈信息输出到指定的输出流

2.4.       getStackTrace():返回该异常的跟踪栈信息

         3.finally:既然有了try和catch语句后,为什么还要有finaly呢,当程序在莫一行发生了异常,那么后面的代码就不会再被执行,这是万万不行的。所以在finaly里存放的是一定要执行的代码,一般为:关闭资源等(如关闭流资源,线程池,数据库连接等);这是很重要的,如果不及时关掉的话,系统资源就会枯竭,影响效率。

         4.throw:用于抛出一个实际的异常,可以单独作为语句使用,抛出一个具体的异常对象。

         5.throws:只能用在方法签名中,用于声明该方法可能抛出的异常。和throw很相像,不要记混了。

四::异常处理的方式

  1.       在出现异常的方法内捕获并处理异常,该方法的调用者将不能再次捕获该异常。在出现异常的地方,直接的catch来捕获之,那么别的方法调用就不用在处理了,因为已近处理过了,这个很好理解的。在实际的开发中建议这种处理方法

        2.       该方法签名中声明抛出该异常,将该异常完全交给方法调用者处理。如果方法里面出现了异常,而你又没有将其try和catch掉,那么必须在方法上声明抛出异常,这样交给方法的调用者来处理。也可以继续向上抛出。但在十几开发中不建议这么干。

        3.catch中加throw:检查到异常,在catch块抛出异常,让更上一级处理

     注意:   企业级应用对异常处理很常用的是通过日志来记录异常发生的详细情况,

五:异常的处理原则

1、 宜早不宜迟:能处理就早处理,抛出不去还不能处理的就想法消化掉或者转换为RuntimeException处理。因为对于一个应用系统来说,抛出大量异常是有问题的,应该从程序开发角度尽可能的控制异常发生的可能。
2、 体系化:对于一个应用系统来说,应该有自己的一套异常处理框架,这样当异常发生时,也能得到统一的处理风格,将优雅的异常信息反馈给用户。 使程序代码混乱最小化,捕捉并保留诊断信息,通知合适人员,采用合适的方式结束异常活动。

3,不要过度使用异常处理,滥用会造成:

4   使用异常处理来代替流程控制。

不要使用过于庞大的try块,把大的try块分割成多个可能出现异常的程序段落,并把他们放在单独的try块中,从而分别捕获并处理异常。

什么是异常? 在什么情况用异常处理机制?

什么事异常????     异常(exception) 是程序运行过程中发生的事件,  该事件可以中断程序指令的正常执行流程.   异常的处理机制(重点) 1当JAVA程序运行时出现问题时,系...
  • woshi2512901978
  • woshi2512901978
  • 2013年01月17日 23:02
  • 5614

JAVA中的异常处理机制及异常分类

JAVA的异常处理机制:如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的...
  • sinat_36713319
  • sinat_36713319
  • 2017年04月01日 16:18
  • 3407

c++异常处理机制示例及讲解

原文链接:http://ticktick.blog.51cto.com/823160/191881 下面的代码直接贴到你的console工程中,可以运行调试看看效果,并分析c++的异常机制。 ...
  • u013727453
  • u013727453
  • 2015年04月24日 15:30
  • 1747

深入理解java异常处理机制

demo1:package test.java.example; /** * Created by hejingyuan on 2016/5/2. */ public class TestCat...
  • hejingyuan6
  • hejingyuan6
  • 2016年05月02日 16:59
  • 4423

【异常】异常的概念,分类和处理机制

异常是指程序运行过程中发生的一些不正常事件(如除0溢出,数组下标越界,所要读取的文件不存在) 抛出异常:Java程序的执行过程中如果出现异常事件,可以生成一个异常类对象,该对象封装了异常事件的信...
  • weixin_35813749
  • weixin_35813749
  • 2016年12月13日 11:02
  • 1080

python的异常处理机制

本菜鸟在用flask后台开发的时候经常会遇到异常管理机制的问题,例如登陆密码不匹配,没有输入等等。借此来学习一下python的异常管理机制。 1、try...except try...excep...
  • bigzhao_25
  • bigzhao_25
  • 2016年04月29日 20:36
  • 686

结构化异常处理 与 非结构化异常处理 的区别

简单来说, 结构化异常处理是指使用包含异常的控制结构、隔离的代码块和筛选器来创建异常处理机制。  这样,您的代码可以区分不同类型的错误,并根据环境做出相应的响应。  在非结构化异常处理中...
  • dzweather
  • dzweather
  • 2013年08月31日 12:02
  • 1788

Java中的异常处理机制的简单原理?

答:    1:java常见异常架构图          1、  粉红色的是受检查异常(checked exception),其必须被try{}catch语句块所捕获,或者在方法签名里通过t...
  • goutiantian
  • goutiantian
  • 2015年10月28日 00:34
  • 1150

细说windows的异常处理和实现——结构化异常

C++里面有使用异常处理的机制,但是那些需要throw catch捕捉等操作 而通常一个win程序,我们会因为各种原因导致其crash,而不一定是throw 了某个exception。我们需要这样...
  • leonwei
  • leonwei
  • 2013年04月27日 01:53
  • 2124

Python异常处理机制

博客核心内容:1.常见的异常类型 2.异常处理机制 3.异常处理方法 4.try………catch到底什么时候用(一)Python中常见的异常类型AttributeError 试图访问一个对象没有...
  • a2011480169
  • a2011480169
  • 2017年06月28日 12:57
  • 619
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java--异常及异常的处理机制
举报原因:
原因补充:

(最多只允许输入30个字)