黑马程序员——异常

来源:互联网 发布:微屏软件科技 陈路 编辑:程序博客网 时间:2024/05/17 05:10



 

 ------- android培训、java培训、期待与您交流! ----------

——————————————————————————————————————————————— 



19、异常

异常是在运行时期方发生的不正常情况。
异常其实就是java通过面向对象的思想将问题封装成了对象
|--异常分为了两大类
Throwable:问题产生就应该可以抛出
通过两个关键字来体现的:
throws 使用在函数上,抛出的是异常类,可以抛出多个用逗号隔开
throw 使用在函数内,抛出的是异常对象
|---一般不可处理的Error
是由JVM抛出的严重性问题,这种问题一般不针对性处理,直接修改程序
|---可以处理的 Exception


|--如果自定义异常类,必须继承异常体系(Exception或者是RuntimeException),只有这样它才具有可抛性
|--异常的两种处理方式:
|---捕捉
|---声明抛出
|--异常的分类:
|---编译时被检测异常,只要是Exception和其子类都是,除了RuntimeException
|---编译时不检测异常(运行异常),就是RuntimeException和其子类
|--继承RuntimeException是需要处理的,不需要声明抛出
|--异常的捕捉
try{
//需要被检测异常的代码
}catch(异常类 变量){// 该变量用于接收发生的异常对象//catch可以有多个
//处理异常的代码
}finally{//通常用于释放(关闭)资源
//一定会被执行的代码
//有一种情况执行不到, System.exit(0);退出JVM
}

|---异常的多catch情况:
一定要将父类异常放到最后
|---异常处理的原则:
函数内容如果抛出需要检查的异常,那么函数上就必须要声明,或者要进行捕捉,否早预编译失败
如果调用了声明异常的函数,那么要么捕捉,要么抛出
功能内容可以结局,用catch,不能解决,就抛出,由调用者解决
如果一个功能抛出了多个异常,那么调用时,就应该多个捕捉(多catch)

|---try catch finally代码块组合
|---- try catch finally
|---- try catch(多个),没有必要释放资源,可以不定义finally
|---- try finally 异常无法直接catch处理(直接声明抛出),但是需要资源关闭,


|--异常的注意事项:
|---
如果父类抛出了异常,那么子类必须抛出父类的异常或者父类异常的子类
|---
如果父类抛出多个异常,那么子类只能抛出抛出父类异常的子集
如果父类的方法没有抛出异常,那么子类覆盖时不能抛出异常
注-->注--> 子类不能抛出比父类更多的异常

20、Object 类
|——equals方法
比较两个对象是否相等,比较的是地址//(可以覆盖equals方法)
一般都会覆盖此方法,根据对象的特有内容,建立判断对象是否相同的依据
class Person{
private int age;
public Person(int age){
this.age = age;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Person))//健壮性判断
throw new ClassCastException("类型错误");
Person p = (Person)obj;
return this.age == p.age;
}
}


public class ObjectTest{
public static void main(String []args){
Person p1 = new Person(20);
Person p2 = new Person(20);
System.out.println(p1.equals(p2);  //覆盖equals方法前,是false。覆盖后是true
}
}

|——hashcode方法 (int 类型)
返回该对象的哈希码值,是一个十六进制
|——getClass方法
得到字节码文件对象
|——toString方法
一般情况下,在输出语句中会自动调用toString方法。


interface A{}


class B implements A{
public void function(){
System.out.println("function run");
}
}
public class Demo{
public static void main(String []args)}{
A a = new B();
a.function();//这里编译时失败的,向上转型后,不能访问特有的方法
}
}

 

 ------- android培训、java培训、期待与您交流! ----------

———————————————————————————————————————————————