读书人

错误Exception

发布时间: 2012-10-25 10:58:58 作者: rapoo

异常Exception

异常:其实就是对不正常情况的描述。在描述过程分成两个部分。一部分可以处理,一部分一般情况其不用处理。通过向上抽取,形成异常体系。Throwable|--Error:不需要编写处理代码。需要对程序进行修改。|--Exception:可以编写特定的处理代码。|--RuntimeException异常在运行时发生,通过特定方式处理:try {需要被检测的代码;}catch(异常类 变量){异常处理代码;}finally{一定会被执行的代码;}catch的运行:当try中检测到了异常,就会把它丢给catch的引用。finally的运行:除了遇到System.exit(0)以外,finally都会被执行。通常finally中书写都是关闭资源代码(调用了系统底层资源,关闭数据库资源。)在定义功能时,功能因为参数的不同,会引发一些问题,那么需要将这些问题暴露出来,让调用者进行处理,因为实际参数是由调用者传入的。通过throws关键字将问题声明在函数上。如果调用到声明了异常的函数,需要对异常进行处理,两种处理方式:1,通过try。2,将异常继续向上抛出。如果是主函数在往外抛,这时jvm就会用默认的异常处理机制对其进行处理,但在这样会导致程序停止。自定义异常:在自定义的项目中,会出现项目针对性的问题,那么按照面向对象的思想,一样需要对该问题的进行描述。并封装成对象。其实和定义其他类一样,都是在描述事物,该描述的类具备可抛性而已。书写:定义一个类,需要继承Exception,目的是让自定的类具备可抛性。class NoException extends Exception{NoException(){super();}NoException(String message){super(message);}}该对象出现的,需要通过throw 关键字手动抛出。为了丰富自定义异常的内容比如异常信息。可以在该类中定义一个构造函数接收字符串异常信息。并通过super将该信息向上传递这样就可以通过Throwable的getMessage()方法获取该自定义信息。原理参考Day8\MyThrowable.java文件。throws与throw区别:throws用在函数上。后面跟的是异常类名,可以跟多个,通过逗号隔开。throw用在函数内,后面跟的异常对象。通常,函数内出现throw,函数上都需要进行throws的声明否则,编译失败。特殊情况,如果函数出现的throw了RuntimeException或者其子类,那么函数上可以不用声明。为什么呢?在编译时期,RuntimeException不会被检测的。在运行发生,通常又默认的异常处理机制进行处理,让程序停掉,需要调用者对代码进行修正。而其他异常,是在编译时期会被检测的。技巧:如果编译时出现了,某某异常,必须被捕获或者声明以便抛出的提示,说明编译错误已经解决到最后了,把该异常问题解决编译搞定。原则:被调用的功能上声明几个异常,在进行try的时候就书写几个catch要对应。如果出现父类catch,一定要往下放。异常使用注意事项:在进行子父类的覆盖时,子类覆盖父类只能抛出父类异常或者异常的子类或者子集。如果父类被覆盖功能没有异常抛出,子类也不可以抛。子类中真的出现了问题,必须用try进行处理。异常的好处:1,对问题进行封装。可以指挥问题做事情。2,引起程序的跳转,当出现的问题已经无法进行下面的运算就需通过异常来导致程序的跳转。3,将程序正常执行代码与错误处理代码相分离。Throwable:String getMessage():获取异常信息。String toString():获取异常类名以及异常信息。void printStackTrace():直接打印异常类名,异常信息以及异常出现的位置。特别注意:try catch finally是三个封闭的代码块 ,也就是说在try中定义的变量,在其他代码块中是无法访问的。数据库连接 conn  = null;try{conn  = new 数据库连接();code...;}catch (){}finllay{conn.close();}
?

读书人网 >编程

热点推荐