我的学习之路_第四章_异常

一  Object 类


equals方法:    四则运算是不能操作引用类型的 ,而 == 可以操作引用类型,但是在任何时刻只要是用 == 比较引用类型,比较的永远都是地址值.


返回类型 Boolean  比较两个对象是否相等,比较的是地址值


Object 的equals方法比较的是地址值,子类可以重写此方法,比较两个对象的属性值






toString方法:
    返回类型String      toString()返回对象的字符串表现形式  类型+@+哈希值(地址值)
看一对象的地址值,只能区分是否为同一个对象,没有什么太大的意思,所以一般子类都会重写toString方法
作用: 不再打印地址值,而是打印属性值
实际上当我们打印一个对象的变量名,系统会默认调用此对象的toString方法




二  异常:


异常在java中的本身就是一个类,产生异常就是创建异常对象并抛出一个异常对象.java处理异常的方式是中断处理


1. 异常的分类:


  异常的根类是: Throwable ,其下有两个子类: Error 和 Exception .一般所说的异常是指Exception
 (1) Error   是无法通过处理的错误.
  特点:只能修改代码,否则程序无法执行




 (2)Exception  编译时异常,编译时是无法通过编译的
  特点:可以进行处理,处理后代码可以继续执行


Exception有一个子类 RuntimeException (运行时异常), 运行时可能会报错,可以不处理


【 1 】处理Exception的方式
使用关键字 throw     在方法内使用      throw  异常的对象

第一种方式: throws 关键字,在方法的申明上使用   申明异常
格式: throws 异常的类名 
注意事项:throws 可以声明多个异常,多个异常之间使用 , 隔开
        throws 可以声明多个异常共同的父类

第二种方式: 
  try{
可能出现异常的代码
}catch(异常类名 变量名){
任意内容   一般打印异常对象的信息
}






多catch的异常处理   
* try{
  可能出现异常的代码
  }catch(异常的类名 变量名){
 
}catch(){
 
  }...


注意事项:   多个catch之间有没有顺序啊?


  异常没有直接继承关系       多个catch是没有顺序的


  异常有继承关系             多个catch 是有顺序的,越大的越往后放




try{

}catch(){


}finally{
必须执行的代码
无论是否有异常  无限是否处理了异常
}




编译时异常:   Exception(父类)
在编译时报错,必须处理,不处理程序不能执行


运行时异常:   RuntimeException(子类)
在编译时不报错,运行时才会报错,可以处理,也不可以不处理       不推荐处理 
一般情况下 出现运行异常都是代码有问题,要修改代码
当运行时异常被抛出时,程序会中断,所以我们有时会使用运行时异常帮我们中断程序




 子父类方法重写时遇到异常的处理问题:


父类方法抛出异常:


子类可以不抛异常
子类也可以抛出异常,但是 子类抛出的异常必须要小于等于父类的异常


父类方法没有抛出异常:


子类也不可以抛出异常  如果子类有异常,只能自己处理,不可以抛出




异常的三个常用方法:


获取异常信息的方法:
返回类型 String    getMessage()     打印 异常字符串
返回来兴 String    toString() 简短描述异常(打印   异常的类型)
没有返回值         printStackTrace()     最详细的异常信息(打印 异常的类名 字符串  位置 等等)




三.  自定义异常


有些异常,是java中没有提供给我们的,这时候我们就需要用自定义异常来解决.

自定义异常的创建:
1.继承Exception  就是编译时异常   如果继承RuntimeException就是运行时异常
2.添加构造方法


自定义异常的使用:  JDK提供的异常如果使用,自定义异常就如何使用


自定义异常的处理:  要么直接 throws   要么  try catch   (和JDK提供的异常处理方式一样)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值