java学习笔记4.10

来源:互联网 发布:新会人民法院 淘宝拍卖 编辑:程序博客网 时间:2024/06/05 03:06

1.异常(exception)与错误(error):

exception是程序在运行中产生的问题,一般指轻度和中度的问题,如:下标越界,空指针异常。异常分为运行时异常和非运行时异常(C语言中又叫做受检异常)。而错误虽然也是程序运行中产生的问题,但是却是用户和程序员所无法控制的问题,例如:调用栈溢出,内存不足。异常与错误有一个共同的父类:Throwable(可抛出)

2.运行时异常:

运行时异常是一个程序在运行过程中可能发生的,可以被程序员避免也会被编译器忽略的异常类型,在程序开发过程中,我们应该尽量发现运行时异常的问题所在,并更改代码,以使得异常不会再次发生。运行时异常有一个共同的父类:RuntimeException。如果我们需要自定义一个运行时异常就需要继承RuntimeException

3.非运行时异常:

非运行时异常通常是用户错误或者不能被程序员所预见的问题,如:如果要打开一个文件,但是文件却已经被删除,此时就会产生异常。此类异常必须用java语言来处理,而不能被编译器简单的忽略。要定义一个非运行时异常需要继承Exception或者除RuntimeException以外的子类

4.发生异常时的情况:

当一个方法在调用栈中发生异常时一般会有三种情况:1、不理会该异常,从而导致该方法从调用栈中被弹出,异常抛給调用该方法的方法,如果不处理继续弹出,直到弹出main方法使程序崩溃或者直到被捕获;2、用try/catch关键字捕获该异常,不让它继续沿着调用栈向下抛;3、捕获该异常,然后用关键字抛出这个异常,该方法不会从调用栈被弹出,但是抛给了下面的方法。

try/catch/finally格式为:

try{//尝试运行代码}catch(Exception e){//出现异常运行代码,catch块可以有多个,但是只会执行一个catch块。按继承关系从子到父排}finally{/*finally中的代码一开始就会缓存,无论如何都会被执行,在没有检测到return语句时会最后执行,检测到了会在return之前执行*/}
5、throws与throw关键字

thorws关键字写在方法名后面,后面跟异常类型,声明该方法会抛出一个异常,让方法调用者不能去简单忽略一个可能产生的异常,必须用语句去处理

throw关键字,立即抛出一个异常,会导致当前代码立即停止执行,异常将被抛給前一个方法

6、重写方法与异常

子类在重写父类方法时不能抛出比父类声明中更大或者更多的异常,如果被允许抛出更大的异常,那么编译器会认为调用的是父类方法而允许编译,但是因为动态绑定机制,调用时会调用子类方法,如果产生异常谁来处理呢?答案是没有

7、用户自定义异常

所有的异常必须是Throwable的子类,继承规则上面有。

0 0
原创粉丝点击