异常

异常的处理

当程序出现一些问题的,可以是严重问题,可以是一种异常,将这些通常为Throwable

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

 Throwable

 error

 exception

 

  举例:

  张三去山上旅行

  1)张三骑车去旅行,山路崩塌了,不能前行了----->不可抗力因素

 2)张三骑车去旅行,骑着发现轮胎没气了------->需要检查的问题

  3)骑着,山路有石子,他就非得往石子上骑,导致车胎没气了---->自己原因造成的,no zuo no die

  

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

  异常:

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

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

  运行时期异常:RuntimeException

  编译通过了,但是开发者代码不严谨(NullPointerExceptino等等...)

 

 

异常的处理分为两种:

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

 2)throws ...抛出异常

 

 变形格式...

 try...catch...

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

 catch....

 

 try{

 一些代码

 try里面的代码越少越

 代码包含了可能会出现问题的代码

 }catch(异常类 异常类对象){  //在括号里面实际上就上是创建该异常对象的过程.相当于

                               // 异常类 异常对象 =  new 异常对象();

 

 try出现异常了,描述的异常刚好就是catch的异常类,就会执行catch里面代码

 //处理异常

 

 

 

如何处理多个异常两个或两个以上的异常的时候怎么办?

 

  try{

  可能出现问题的代码

  }catch(异常类 对象名){

  处理异常的代码

  }

  

  

  try{

  可能出现问题的代码

  int[] arr = {1,2,3} ;

  Sop(arr[3]);

  int a = 10 ;

 int b =0 ;

 Sop(a/b) ;

  

  

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

  //异常处理

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

  

  //异常处理

  }

异常类中的爷爷类一定要放在后面(例如 Exceptiong类一定要放在ArithmeticException 类后面)

 

 

 

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

 

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

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

  

  

  处理异常的第二种方式:使用throws 抛出异常 (跟在方法的后面)

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

  }

  抛出异常这里有一个比较形象的描述

你给我一段语句,我就返回正确;如果语句有问题,我就喊一声“格式有问题!”。

这里的throws,就相当于实现了“喊一声”的功能。

 

 

如果try语句中出现了问题,会通过代码创建一个异常对象,然后和catch语句中的类进行比较是否一致,一致就输出Cath里面里面的代码,执行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:抛出的一个异常对象

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

 它表示抛出异常的肯定性

 

 

 try...catch...finally

 finally语句体是一定会执行的,除非是Jvm退出了

 

 

自定义一个异常类

 

自定义异常类,两种方式

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

 2)自定义一个类,继承RuntimeException

 

 

异常中的注意事项:

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

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

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

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值