黑马程序员——异常
来源:互联网 发布:微屏软件科技 陈路 编辑:程序博客网 时间: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培训、期待与您交流! ----------
———————————————————————————————————————————————
- 黑马程序员—异常
- 黑马程序员—异常
- 黑马程序员—异常
- 黑马程序员—异常
- 黑马程序员—异常
- 黑马程序员—异常
- 黑马程序员—异常
- 黑马程序员——异常
- 黑马程序员——异常
- 黑马程序员——异常
- 黑马程序员——异常
- 黑马程序员——异常
- 黑马程序员——异常
- 黑马程序员——异常
- 黑马程序员——异常
- 黑马程序员——异常
- 黑马程序员——异常
- 黑马程序员——异常
- Go 语言简介(下)— 特性<转载>
- 黑马程序员——内部类、匿名内部类
- C++游戏开发需要阅读的书籍
- 一个简单的epoll测试例子
- linux kernel panic解决思路
- 黑马程序员——异常
- 常数变易法的原理
- 移动版三星N7108 root教程
- 高性能的分布式内存对象缓存系统-Memcached简介
- 经典排序算法 – 奇偶排序Odd
- 题目1098:字母统计
- 黑马程序员——多线程
- 基础排序算法 – 快速排序Quick sort
- 基础排序算法 – 插入排序Insertion sort