蜡笔没了小新

愿生活正在渐渐变成你想要的样子

Exception

Throwable 类是 Java 语言中所有错误或异常的超类

当程序出现一些问题时,可以是严重问题,可以是一种异常

Throwable

  error

Exception

error:可抗力因素, 属于严重问题   例如内存溢出了 (加载页面中大量图片的时候,程序会挂掉---使用第三方的框架去处理:ImageLoader)

Exception:

   1>编译时期异常:只要出现的不是运行时期异常,统称为编译时期  例如:日期的文本格式---解析   java.util.Date类型:ParseException:解析异常

 注意:编译时期异常:开发者必须处理!

2>运行时期异常:RuntimeException,编译可以通过,由于开发者代码不严谨导致的(NullPointerExceptino等等...)

异常的处理分为两种:

  1)try...catch...finally (标准格式) :捕获异常

  2)throws ... 抛出异常

一:try....catch..... 

变形格式...

 try...catch...

 try...catch...catch...

 catch....

1>若只有一个异常的处理格式: 

try{

可能出现问题的代码

   }catch(异常类 异常类对象){

  如果try中的代码出现的异常,常刚好就是catch的异常类,就会执行catch里面代码

  //处理异常代码

 }

 2>若多个异常的处理格式:

   try{

   可能出现问题的代码

  

   }catch(异常类名1 对象名1){

   //异常处理

   }catch(异常类名2 对象名2(){

   //异常处理

  }

 注意: 1>try里面的代码越少越好

2>catch中必须要有内容,哪怕是一个提示,否则没有意义

3>try中有多个异常,只执行一个 就结束try...catch语句

Jdk7以后出现另一种方式处理多个异常:

  try{

   可能出现问题的代码;

  }catch(异常类名1 | 异常类名2 |... 对象名){

   处理异常

  }

编译时期异常和运行时期异常的区别?

  编译时期:开发者必须进行显示处理,不处理,编译不能通过,

运行时期异常:无需进行显示处理,可以像编译时期一样进行处理

如果catch里面有return 语句,finally中的代码还会执行,是在return语句之前执行还是return后执行?

 finally中代码是一定会执行的,是在return

代码:

public class FinallyTest {

public static void main(String[] args) {

System.out.println(getInt());

}

private static int getInt() {

int a ;

try {

a = 10 ;

System.out.println(a/0);

a = 20 ;

}catch(Exception e) {

a= 30 ;

return a ;

/**

 * try的代码出现问题了,执行catch中的语句,30赋值a,

 * return 30(已经形成了一个回路径)finally代码一定会执行(除非Jvm) a = 40 ,在fianlly外面

 * 有return a: a记录回路径的那个a,返回30

 */

}finally {

//除非jvm退出了

a = 40 ;

}

return a;//30

}

}

 

二:使用throws 抛出异常 (跟在方法的后面)

格式:

  xxx 返回值  方法名() throws  异常类名{

  }

Throwable里面的方法

public String getMessage() :消息字符串

public String toString(): 异常的简短描述 ": 由冒号和空格组成

 public void printStackTrace():返回值void 直接调用, 包含了消息字符串,还有": "

信息描述,具体出现异常的代码定位以及定位的源码上

面试题:final,finally,finalize的区别?

final 可以修饰类,该类不能被继承;可以修饰变量,该变量是常量;可以修饰成员方法,该方法重写

finalize:gc():运行垃圾回收器,实际是调用finalize()方法,和垃圾回收器有关系

finally:io,数据库中以及后面对数据库操作(DBUtuls/c3p0/Hibernate/MyBatis)里面中释放资源的

throw:表示也是抛出异常,抛出的一个异常对象 (throw new 异常类名() :匿名对象的方式)

面试题:

throwsthrow的区别?

throws:

表示抛出异常,它后面跟的异常类名,

并且可以多个异常类名中间逗号开

在方法上抛出,由调用者处理

  它表示抛出异常的可能性

 

举例:

 public void show() throws IoException,ClassNotFoundException{...}

throw:

抛出的一个异常对象

  在语句体中抛出的,由语句体进行处理

  它表示抛出异常的肯定性

自定义异常类,两种方式

  1)自定义一个类,这个继承自Exception

  2)继承RuntimeException

异常中的注意事项:

子类继承父类的时候的注意事项

  1)子类重写父类的方法的时候,子类的方法的抛出的异常必须要么是父类的方法异常一样,要么是父类方法异常的子类

  2)子类重写父类方法的时候,如果父类中的这个方法没有抛出异常,那么子类重写的这个方法也不能抛出异常,只能try...catch

 

 

 

阅读更多
个人分类: Java
上一篇set及其子类
下一篇File类
想对作者说点什么? 我来说一句

exception 异常处理 exception

2010年02月03日 890B 下载

JAVA 自定义异常 Exception

2010年09月07日 2KB 下载

oracle常见Exception

2011年10月20日 1021B 下载

aop+exception的测试代码

2008年08月29日 13KB 下载

exception C++ & More exception C++

2009年10月16日 843KB 下载

Informix存储过程笔记

2010年08月03日 188KB 下载

易语言源码,编写自己的OD

2014年02月13日 85KB 下载

Exception C++ 和 More Exception C++

2009年12月19日 4.79MB 下载

S6.1_Struts2_Exception

2016年12月15日 61KB 下载

没有更多推荐了,返回首页

关闭
关闭