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抛出的异常或错误;
- 程序级异常;
阅读全文
0 0
- JavaSE学习----Exception类
- JavaSE 自定义Exception
- 【JavaSE】day12_异常(Exception)
- javaSE 集合类学习
- JavaSE学习----String类
- JavaSE学习----Math类
- JavaSE学习----Arrays类
- JavaSE学习----StringBuffer/StringBuilder类
- JAVASE基础 Item -- 异常处理Exception
- JavaSE学习总结1:OOP和类
- JavaSE学习笔记_6:Java-Object类
- JavaSE学习笔记_11:Java-字符串类
- JavaSE学习笔记_13:Java-System类
- JavaSE学习笔记_15:Java-Date类
- JavaSE学习笔记_16:Java-Calendar类
- JavaSE学习笔记_14:Java-Runtime类
- JavaSE学习笔记之-----常用类
- JavaSE 学习参考:类的定义
- qt QTableWidget&&QTableView 导出数据到excel
- 图片加载方式
- Centos7 安装mysql
- 异步API Fetch
- 相同对象的复制
- JavaSE学习----Exception类
- 十大云存储平台技巧
- RxJava2.0中flatMap操作符用法和源码分析(五)
- Adaboost 算法的原理与推导
- RelativeLayout
- mongo副本集群搭建过程
- Java动态代理机制
- 算法第四版第一章练习1.4.15 3_sum的O(n²)解法
- JIRA 7.3.8 项目管理搭建