黑马程序员__异常
2015-04-30 15:44
232 查看
------- android培训、java培训、期待与您交流!
----------
现实世界中,往往会发生一些不同以往的情况,比如说一向准时上课的小明
某天突然迟到了,一向身体健康的大明某天突然生病了,等等这些突然发生的
不同寻常的状况我们就把他称作异常情况,简称异常。同样,在java程序当中
往往也很容易会出现一些异常,现实中出现异常人们会采取一些处理措施,比
如老师会询问小明迟到的原因以及根据原因对小明做出不同的处罚,将生病的
大明送往医院让医生检查病情并及时医治。java中对可能发生的异常也有自己
的处理机制。本篇博文将详细阐述java中的异常处理机制。
1.try...catch语句:捕获异常。
java中一般用try...catch语句来捕获可能出现异常的代码块。它的一般格式如下
由于异常会强制的中断正常流程,比如说如果try中的代码发生异常,程序会跳转
catch代码块中执行,而程序中余下的代码将不会得到执行。但是,有时候程序中
会有一些不得不执行的代码,如果得不到执行,就会影响程序的健壮性。这时,
java中通常与try...catch能够连用的finally代码块。(注意是finally而不是此前所提到
过的final,final是用来修饰类,方法以及成员变量的)finally代码块不管try中的代码
是否会发生异常,都会执行到。
2.throws子句:声明可能会出现的异常。
如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用
throws子句来声明抛出异常。
上述代码中用throws语句来声明方法将要抛出异常,在该方法内部的throw语句用于将异常对象
创建,而该方法抛出的异常对象就是该对象。(注意java是一门面向对象的语言,java将异常也
看做是一个对象来处理)。对于thow语句所抛出的对象,则必须是java.lang.Throwable类或者其
子类的实例,一下代码将编译失败:
3.对于处理语句,要正确使用它们,,就必须遵守必要的语法规则。
(1)try代码块不能脱离catch代码块或者是finally代码块而单独存在。其后至少有一个catch块
或者是finally块,否则编译失败。
(2)如果try后面既有catch代码块又有finally代码块,那么必须要把finally代码块放在catch代码块
之后。
(3)try后面可以只有finally代码块。
(4)只在try中定义的变量其作用域为try代码块,catch代码块以及finally代码块都将不能访问到。
(5)一个方法的异常通常有两种处理方式,要么用try...catch捕获并自行处理,要么通过throws声明
抛出该异常给方法的上一层调用者处理。
(6)java中的Throwable类中提供了两个很常用的方法:
getMessage()--返回String类型的异常信息。
printlnStackTrace()--打印跟踪方法调用栈而获得的详细异常信息。
----------
现实世界中,往往会发生一些不同以往的情况,比如说一向准时上课的小明
某天突然迟到了,一向身体健康的大明某天突然生病了,等等这些突然发生的
不同寻常的状况我们就把他称作异常情况,简称异常。同样,在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---异常
- 黑马程序员_Java异常处理机制
- 黑马程序员_异常
- 黑马程序员———Java异常机制
- 黑马程序员-----java异常总结*
- 黑马程序员-JAVA-常见异常与基本处理
- 黑马程序员—【Java基础篇】之多态、内部类、异常及包
- 黑马程序员---------Java面向对象——异常总结
- 黑马程序员——学习日记3——异常机制
- 黑马程序员_字符流_字节流_IO异常处理_文件的续写_拷贝文本_缓冲流
- 黑马程序员——————一、Java异常的基础知识
- 黑马程序员——异常概叙
- 黑马程序员-----------------异常
- 黑马程序员------关于异常
- 黑马程序员——基础学习(十二)异常(Throwable)类、文件(File)类及递归
- 黑马程序员_内部类和异常的练习
- 黑马程序员---异常,同步
- 黑马程序员—内部类与匿名内部类 异常