黑马程序员__异常
来源:互联网 发布:淘宝旺季是什么时候 编辑:程序博客网 时间:2024/06/11 23:00
------- android培训、java培训、期待与您交流! ----------
现实世界中,往往会发生一些不同以往的情况,比如说一向准时上课的小明
某天突然迟到了,一向身体健康的大明某天突然生病了,等等这些突然发生的
不同寻常的状况我们就把他称作异常情况,简称异常。同样,在java程序当中
往往也很容易会出现一些异常,现实中出现异常人们会采取一些处理措施,比
如老师会询问小明迟到的原因以及根据原因对小明做出不同的处罚,将生病的
大明送往医院让医生检查病情并及时医治。java中对可能发生的异常也有自己
的处理机制。本篇博文将详细阐述java中的异常处理机制。
1.try...catch语句:捕获异常。
java中一般用try...catch语句来捕获可能出现异常的代码块。它的一般格式如下
try{可能会发生异常的代码块}catch(Exception e){处理异常现象的方法}
由于异常会强制的中断正常流程,比如说如果try中的代码发生异常,程序会跳转
catch代码块中执行,而程序中余下的代码将不会得到执行。但是,有时候程序中
会有一些不得不执行的代码,如果得不到执行,就会影响程序的健壮性。这时,
java中通常与try...catch能够连用的finally代码块。(注意是finally而不是此前所提到
过的final,final是用来修饰类,方法以及成员变量的)finally代码块不管try中的代码
是否会发生异常,都会执行到。
<span style="font-size:12px;">class A{int a,b,t;public static void main(String[] args) {try{t=a+b;}catch(Exception e){}finally{system.out.println(t)}}//将打印t的值</span>
2.throws子句:声明可能会出现的异常。
如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用
throws子句来声明抛出异常。
class A{int method(a,b)throws Exception{if(b==0)throw new Exception("除数不能为0")return a/b;}public static void main(String[] args) {int a=8,b=0,t;try{t=new A().method(a,b);}catch(Exception e){e.toString}finally{system.out.println(t)}}}<pre class="java" name="code">
上述代码中用throws语句来声明方法将要抛出异常,在该方法内部的throw语句用于将异常对象
创建,而该方法抛出的异常对象就是该对象。(注意java是一门面向对象的语言,java将异常也
看做是一个对象来处理)。对于thow语句所抛出的对象,则必须是java.lang.Throwable类或者其
子类的实例,一下代码将编译失败:
throw new String("不好了,失火了");//编译失败,String类型不是异常类
3.对于处理语句,要正确使用它们,,就必须遵守必要的语法规则。
(1)try代码块不能脱离catch代码块或者是finally代码块而单独存在。其后至少有一个catch块
或者是finally块,否则编译失败。
class A{public static void main(String[] args){int a,b;try{system.out.println(a/b);}//编译失败}}
(2)如果try后面既有catch代码块又有finally代码块,那么必须要把finally代码块放在catch代码块
之后。
<span style="font-size:12px;">class A{int method(a,b)throws Exception{if(b==0)throw new Exception("除数不能为0")return a/b;}public static void main(String[] args) {int a=8,b=0,t;try{t=new A().method(a,b);}finally{system.out.println(t)}catch(Exception e){e.toString}//编译失败}}</span>
(3)try后面可以只有finally代码块。
<span style="font-size:12px;">class A{int method(a,b)throws Exception{if(b==0)throw new Exception("除数不能为0")return a/b;}public static void main(String[] args) {int a=8,b=0,t;try{t=new A().method(a,b);}finally{system.out.println("hello world")}//编译通过}}</span>
(4)只在try中定义的变量其作用域为try代码块,catch代码块以及finally代码块都将不能访问到。
<span style="font-size:12px;">class A{int method(a,b)throws Exception{if(b==0)throw new Exception("除数不能为0")return a/b;}public static void main(String[] args) {int a=8,b=0,t;try{int x=0;t=new A().method(a,b);}catch(Exception e){x++;//编译出错,不能访问到x变量。e.toString}finally{x++;//编译出错,不能访问到x变量。system.out.println(x)}}}</span>
(5)一个方法的异常通常有两种处理方式,要么用try...catch捕获并自行处理,要么通过throws声明
抛出该异常给方法的上一层调用者处理。
(6)java中的Throwable类中提供了两个很常用的方法:
getMessage()--返回String类型的异常信息。
printlnStackTrace()--打印跟踪方法调用栈而获得的详细异常信息。
- 黑马程序员__异常
- 黑马程序员__异常
- 黑马程序员__异常
- 黑马程序员__异常机制
- 黑马程序员__内部类和异常
- 黑马程序员__内部类和异常
- 黑马程序员__异常及其处理机制
- 黑马程序员Java基础__内部类与异常
- 黑马程序员——Java基础__异常
- 黑马程序员__java基础__面向对象(多态、异常)
- 黑马程序员__俄罗斯方块
- 黑马程序员__多线程
- 黑马程序员__基础知识
- 黑马程序员__泛型
- 黑马程序员__多线程
- 黑马程序员__多线程
- 黑马程序员__交通灯
- 黑马程序员__静态
- 浅谈Spring
- 内存池设计与实现 .
- Eclipse的debug不能运行问题
- How to collect the full path name of the files in ASM diskgroups (文档 ID 888943.1)
- select2使用demo
- 黑马程序员__异常
- js获取DropDownList的选中项的value值
- 如何隐藏input标签的样式
- 总结JS打印方法
- 推荐5款超实用的.NET性能分析工具
- 2015/04/30CSS学习记录
- Lua导入第三方库或目录
- 使用Rails实现文件上传
- CSS小笔记