黑马程序员_Java异常处理

来源:互联网 发布:如何看待网络暴力现象 编辑:程序博客网 时间:2024/06/05 14:23

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


1、异常的体系
Throwable
  Error
    通常出现重大问题如:运行的类不存在或者内存溢出等。
    不编写针对代码对其处理
  Exception
    在运行时运行出现的一起情况,可以通过try catch finally
Exception和Error的子类名都是以父类名作为后缀。

2、使用try....catch捕获异常
基本过程是用try包住可能发生的语句,如果在try语句块内出现异常,则异常会被抛出,在catch中可以捕获到这个异常并做处理,finally语句会在方法执行return之前一定执行。
  try{
  程序代码
  }catch(异常类型1 异常的变量名1){
  程序代码
  }catch(异常类型2 异常的变量名2){
  程序代码
  }finally{
  一定会执行的代码;
  }
catch语句可以有多个,用来匹配多个异常,匹配上多个中一个后,执行catch语句块时候仅仅执行匹配上的异常。如果多个catch块中的异常类出现继承关系,父类异常的catch块放在下面。如果程序需要在catch块中访问异常对象的相关信息,可以通过调用catch后异常形参的方法来获取。当java运行时决定调用某个catch块来处理该异常对象时,会将该异常对象赋给catch块后的异常参数,程序就可以通过该参数来获得该异常的相关信息。

Finally代码块只有一种情况不会被执行。就是在之前执行了System.exit(0)

3、所有异常对象都包含如下常用方法:
getMessage(): 返回此 throwable 的详细消息字符串。
printStackTrace(): 将此 throwable 及其追踪输出至标准错误流。
printStackTrace(PrintStream s):将此 throwable 及其追踪输出到指定的输出流。
getStackTrace():提供编程访问由 printStackTrace()输出的堆栈跟踪信息。
toString(): 返回此 throwable 的简短描述。

    finally一般用于关闭必须显示回收的资源。
        异常处理语法结构中,try块是必须的,catch块和finally块是可选的,但catch和finally块至少出现其中之一,但不能只有try块,catch块和finally块都没有。
4、throws和throw声明抛出异常
 
 throw语法:throw <异常对象>

throw要么和try-catch-finally语句配套使用,要么与throws配套使用
 
 throws语法:[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类> 
 
异常类可以声明多个,用逗号分割。但throws可以单独使用,然后再由处理异常的方法捕获。子类方法中声明抛出的异常类应该是父类方法声明抛出的异常类型的子类型或相等。 子类方法中不允许比父类方法声明抛出更多的异常
 
5.自定义异常: 
 
class 异常类名 extends Exception 
    public 异常类名(String msg) 
    { 
        super(msg); 
    } 
}  
通过throw将自定义异常抛出。

6、RuntimeException以及其子类如果在函数中被throw抛出,可以不用
在函数上声明。

一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子
类。

如果父类抛出多个异常,那么重写(覆盖)方法必须抛出那些异常
的一个子集,不能抛出新的异常。 


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

详细请查看:www.itheima.com

0 0
原创粉丝点击