java学习:异常处理

1.程序执行过程中发生不正常的情况,而这种不正常的情况叫做异常

2.java语言是很完善的语言,提供了异常的处理方式,程序执行过程中出现了不正常情况,java把异常信息打印输出到控制台,供程序员参考,程序员看到异常信息之后,可以对程序进行修改,让程序更加的健壮

3.异常在java中以类的方式存在,每一个异常类都可以创建一个异常对象

4.UML:

UML是一种统一建模语言。

一种图标式语言(画图的)

UML不是只有java中才使用,只要是面向对象的编程语言,都有UML

一般画UML图的都是软件架构师或者说是系统分析师,这些级别的人员使用的,软件设计人员使用UML

在UML图中可以描述类与类之间的关系,程序执行的流程,对象的状态等

5.所有的错误只要发生,java程序只有一个结果,那就是退出程序的执行,退出JVM,错误是不能处理的

6.不管是错误还是异常都是可抛出的

7.所有EXception的直接子类,都叫做编译时异常,编译时异常是表示必须在编写程序的时候预先对这种异常进行处理,如果不处理,编译器报错

8.所有的RuntimeException及子类都属于运行时异常,运行时异常在编写时可以选择处理,也可以选择不处理

9.

10.编译时异常和运行时异常,都是发生在运行阶段,编译阶段异常不会发生

11.编译时异常必须在编译阶段预先处理,如果不处理编译器报错,因此得名。

12.所有异常都是在运行阶段发生的,因为只有程序运行阶段才可以new对象,所以异常的发生就是new异常对象

13.编译时异常和运行时异常的区别:

编译时异常一般发生的概率比较高

        对于一些发生发生概率较高的异常,需要在进行之前对其进行预处理

运行时异常一般发生的概率比较低

14.编译时异常还有其他名字

        受检异常:CheckedException;受控异常

15.运行时异常还有其他名字

        未受检异常:UnCheckedException;非受控异常

16.java语言对异常的处理方式包括两种方式:

1.在方法声明的位置上,使用throws关键字,抛给上一级 

2.使用try...catch语句进行异常的捕捉

17.一般不建议在main方法上使用throws,因为这个异常如果真正的发生了,一定会抛给JVM,JVM终止。异常处理机制的作用就是增强程序的健壮性,所以,一般main方法中的异常建议使用try...catch进行捕捉。main方法就不再上抛了

18.只要异常没有捕捉,采用上报的方式,此方法的后续代码不会执行

19.try语句块中的某一行出现异常,该行后续的代码不会执行,try...catch捕捉之后,后续代码可以执行

20.catch后面的小括号中的异常可以时具体的异常,也可以时该异常的父类

21.catch也可以写多个。建议catch的时候精确的一个一个处理。这样有利于程序的调试

22.catch写多个的时候,从上而下,必须遵守从小到大

23.在开发中,处理编译时异常,如果希望调用者处理,选择throws上报,其他情况使用捕捉的方式

24.异常对象有两个非常重要的方法:

1.获取异常的简单描述信息:

        String msg = exception.getMessage;

2.打印异常追踪的堆栈信息:

        exception.printStackTrace();

25.获取异常简单描述信息:这个信息实际上就是构造方法上面的String参数

26.java后台打印异常堆栈追踪信息的时候,采用了异步线程的方式打印

27.异常追踪信息,从上往下一行一行看,但是需要注意的是,SUN写的代码就不需要看了,主要的问题是出现在自己编写的代码上

28.关于try...catch中的finally语句:

1.在finally的子句中的代码是最后执行的,并且是一定会执行的,即使是try语句块中的代码出现了异常

2.finally子句必须和try一起出现,不能单独编写

3.通常finally语句块中的完成资源的释放/关闭,因为finally中的代码比较有保障,即使try语句块中的代码出现异常,finally中的代码也会正常执行

29.final,finally,finalize的区别:

  1. final是一个关键字,表示最终的,不变的
    1. final修饰的类无法继承
    2. final修饰的方法无法覆盖
    3. final修饰的变量不能重新赋值
  2. finally也是一个关键字,和try联合使用,使用在异常处理机制当中,在finally语句块中的代码是一定会执行的
  3. finalize()是Object类中的一个方法。作为方法名出现,所以finalize是一个标识符
    1. 这个方法是由垃圾回收器GC负责调用

30.在实际开发中,有很多业务,这些业务痴线异常之后,JDK中是没有的,和业务挂钩。

31.程序员可以自己定义异常类

1.编写一个类继承Exception或者RuntimeException

2.提供两个构造方法,一个无参数的,一个带有String参数的

32.重写之后的方法不能比重写之前的方法抛出更多(更广泛)的方法,可以更少

33.异常中的关键字:

  1. 异常捕捉
    1. try
    2. catch
    3. finally
  2. throws:在方法声明位置上使用,表示上报异常给调用者
  3. throw:手动抛出异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值