JavaSE学习----Exception类

来源:互联网 发布:数据漫游什么时候打开 编辑:程序博客网 时间:2024/06/03 05:46

异常的分类:

  • 检查型异常:用户错误或问题引起的异常;
  • 运行时异常;
  • 错误:在代码中经常被忽略;

类介绍:

包含于Java.lang,Throwable类的子类,包含两个主要的子类:IOException类和RuntimeException类

类方法:

  • public String getMessage() //返回关于发生的异常的详细信息。这个消息在Throwable 类的构造函数中初始化了;
  • public Throwable getCause() //返回一个Throwable 对象代表异常原因;
  • public String toString() //使用getMessage()的结果返回类的串级名字;
  • public void printStackTrace() //打印toString()结果和栈层次到System.err,即错误输出流;
  • public StackTraceElement [] getStackTrace() //返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底;
  • public Throwable fillInStackTrace() //用当前的调用栈层次填充Throwable 对象栈层次,添加到栈层次任何先前信息中;

捕获异常:

使用关键字try和catch捕获异常

try  {   //程序代码   }catch(Exceptionname e)   {   //catch块   }

catch语句包含要捕获异常类型的声明,当保护代码块中发生一个异常时,异常会被传递到该 catch 块,这和传递一个参数到方法是一样;

eg:

public class Demo{    public static void main(String args[]){          try{             int a[] = new int[2];             System.out.println("Access element three :" + a[3]);          }catch(ArrayIndexOutOfBoundsException e){             System.out.println("Exception thrown  :" + e);          }          System.out.println("Out of the block");       }    }
Exception thrown  :java.lang.ArrayIndexOutOfBoundsException: 3Out of the block

多重捕获:

try块后面跟着多重catch

try{   // 程序代码}catch(异常类型1 异常的变量名1){  // 程序代码}catch(异常类型2 异常的变量名2){  // 程序代码}catch(异常类型2 异常的变量名2){  // 程序代码}

throws/throw关键字:

如果一个方法没有捕获一个检查性异常,该方法必须要用throws来声明,也可以用throw关键字抛出一个异常,无论它是新实例化的还是刚捕获到的;

finally关键字:

finally关键字用来创建在try代码块后面执行的代码块,无论是否发生异常,finally代码块中的代码总会被执行,在finally代码块中,可以运行清理类型等收尾善后的语句;

注意:

  • 自定义检查性异常类要继承Exception类;
  • 自定义运行时异常类要继承RuntimeException类;
    eg:
class InsufficientFundsException extends Exception{    private double amount;    public InsufficientFundsException(double amount)    {        this.amount = amount;    }    public double getAmount()    {        return amount;    }} class CheckingAccount {    private double balance;    private int number;    public  CheckingAccount (int number)    {        this.number = number ;    }    public void deposit(double amount)    {        balance += amount;    }    public void withdraw(double amount) throws InsufficientFundsException    {        if( amount <= balance )        {            balance -= amount;        }        else        {            double needs = amount - balance;            throw new InsufficientFundsException(needs);        }    }    public double getBalance()    {       return balance;    }   //方法:返回卡号    public int getNumber()    {       return number;    }    } public class Demo01{     public static void main(String [] args)       {          CheckingAccount c = new CheckingAccount(101);          System.out.println("Depositing $500...");          c.deposit(500.00);          try          {             System.out.println("\nWithdrawing $100...");             c.withdraw(100.00);             System.out.println("\nWithdrawing $600...");             c.withdraw(600.00);          }catch(InsufficientFundsException e)          {             System.out.println("Sorry, but you are short $"                                      + e.getAmount());             e.printStackTrace();          }        } }
Depositing $500...Withdrawing $100...Withdrawing $600...Sorry, but you are short $200.0Java基础.InsufficientFundsException    at Java基础.CheckingAccount.withdraw(Demo01.java:36)    at Java基础.Demo01.main(Demo01.java:62)

通用异常:

  • JVM异常:由JVM抛出的异常或错误;
  • 程序级异常;
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 CF手游昵称不合法怎么办 微信gif尺寸过大怎么办 微信表情上限300怎么办 太受欢迎了怎么办快穿 兔宝宝沾上人气味怎么办 我该怎么办的文字图片 爱奇艺缓存视频显示下载失败怎么办 把老公惹生气了怎么办 苹果x用电量太快怎么办 小中考地生没过怎么办 如果遇到不负责的语文老师怎么办 孩子的语文老师教的不好怎么办 刚买的小猫很凶怎么办 2月幼犬不吃东西怎么办 小狗狗不吃狗粮怎么办 母猫不会照顾小猫怎么办 刚买的小狗拉稀怎么办 母兔子吃小兔子怎么办 照片照出来背亮景人是黑的怎么办 手机透明壳变黄了怎么办 ae视频渲染太慢怎么办 3ce口红太干了怎么办 中考误用0.38mm的笔怎么办 ps画笔都锁住了怎么办 削铅笔机坏了怎么办 幼儿园小朋友不听老师话怎么办 孩子在幼儿园不听老师话怎么办 幼儿园大班孩子上课不好好上怎么办 脸上挠了血印子怎么办 大班公开课烫伤了怎么办教案 孩子心理出现了问题该怎么办 幼师打孩子很多家长告怎么办 课堂上纪律不好的学生怎么办 孩子上幼儿园总感冒怎么办 孩子上幼儿园总生病怎么办 台湾人抗拒统大陆人中国人怎么办 如果一年的公休日耍不完怎么办 我一个月要歇三天班怎么办 学校没给报到证怎么办 员工休息一天老板拉着脸怎么办 换工作了报到证怎么办