java异常处理
来源:互联网 发布:百度云限速脚本 知乎 编辑:程序博客网 时间:2024/06/11 03:19
一、异常介绍Java异常是一个描述在代码段中发生的异常(也就是出错)情况的对象。java提供了大量的异常类,这些类都继承自java.lang.Throwable类。下面是Throwable类的继承体系。
- Error类为错误类,表示java运行时产生的系统内部错误或资源耗尽的错误,是比较严重的,仅靠程序本身是不能解决的。
- Exception类为异常类,表示程序本身可以处理的错误,在开发java程序中进行的异常处理,都是针对Excption类及其子类。
在Exception类的子类中,自由RuntimeException类是表示运行时的异常,其他子类表示编译时的异常。
- 编译时异常:java编译器会对其进行检查,如果出现异常就必须对异常进行处理,否则无法通过便宜。
- 运行时异常:java编译器不会对其进行检查,出现异常时都能编译通过。例如:数组越界;
二、try..catch和finallytry..catch语句用于捕获异常,try会捕获在其内代码出现的异常,并在catch中处理。try{//可能出现异常的代码块;}catch(ExceptionName e1){//处理块;}
- catch代码块处理完后,程序会继续向下执行,即执行在try..catch外面下面的代码。
- try代码块中出现异常后,代码块中没执行的代码不会继续执行,直接在catch中处理。
- catch中声明了接受异常的类型,必须是Exception类或其子类。
多重捕获块,try{ //程序代码 }catch(异常类型1异常的变量名1){ //程序代码 }catch(异常类型2异常的变量名2){ //程序代码 }catch(异常类型2异常的变量名2){ //程序代码 }
- 如果保护代码中发生异常,异常被抛给第一个 catch 块。
- 如果抛出异常的数据类型与 ExceptionType1 匹配,它在这里就会被捕获。
- 如果不匹配,它会被传递给第二个 catch 块。
- 如此,直到异常被捕获或者通过所有的 catch 块。
finally:加在try..catch后面,无论程序是否发生异常都会执行finally中的代码。try{ //程序代码 }catch(异常类型1异常的变量名1){ //程序代码 }finally{ //程序代码 }
- 只有在执行了System.exit(0)语句后,finally中的代码块才不会执行,因为该代码表示退出当前的java虚拟机,虚拟机停止后任何代码都不能执行了。
- 在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。
三、throws关键字throws用于在某一方法中抛出异常。publicclassclassName { publicstaticvoid main(Stringargs[]){ try{ double i; withdraw(i); }catch(ArrayIndexOutOfBoundsExceptione){ System.out.println("Exception thrown :"+e); } } publicvoidwithdraw(doubleamount)throwsException { } }
- 在使用throws抛出方法中的异常时,必须需要在调用的时候对抛出的异常进行捕获,否则会发生编译错误。
- throws后面声明发生异常的类型,为方法声明抛出一个异常。
四、自定义异常自定义异常便是创建一个异常类,但必须继承Exception类或其子类。publicclassInsufficientFundsException extends Exception { publicInsufficientFundsException(){ super(); } publicInsufficientFundsException(String message){ super(message);//调用Exception有参的构造方法; } }publicclassclassName { publicstaticvoid main(Stringargs[]){ try{ //捕获异常; double i; withdraw(i); }catch(InsufficientFundsException e){ System.out.println(e.getMessage); } } publicvoidwithdraw(doubleamount)throwsInsufficientFundsException { int i=2; if(i>0){ thrownewInsufficientFundsException("i大于0");//抛出异常; } } }五、异常方法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 对象栈层次,添加到栈层次任何先前信息中。
阅读全文
1 0
- 【java】java异常处理
- java异常和异常处理
- Java 异常及异常处理
- java异常与异常处理
- Java异常处理-----自定义异常
- Java异常与异常处理
- java异常及异常处理
- Java 异常与异常处理
- Java异常与异常处理
- Java异常及异常处理
- Java异常处理--自定义异常
- JAVA异常之异常处理
- Java异常处理-----自行处理
- Java异常处理-----抛出处理
- Java异常处理-----抛出处理
- java异常处理
- java 异常处理分析
- java异常处理
- Ubuntu中出现libz.so.1问题
- Kali Linux 下使用官网的 .tar.bz2压缩包 安装Sublime Text 3的方法
- 深入理解JavaScript运行机制
- 用织梦CMS配合织梦万能API插件开发的微信小程序demo
- 快速排序感想
- java异常处理
- TOJ 2746: Classifying Triangles
- LinearLayout、RelativeLayout、GridLayout目前安卓常用的三种布局
- 《Spring In Action》读书笔记
- Python简谈
- Windows和linux操作socket的区别(简单对比)
- 个人总结67
- MySQL 5.7.20 安装教程
- 用fallocate进行"文件预留"或"文件打洞"