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

一 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提供的异常处理方式一样)

posted on 2017-06-05 22:37  贾_jia  阅读(82)  评论(0编辑  收藏  举报

导航