黑马程序员-异常

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

 

异常的作用是什么?

把发生异常部分内容封装起来,提供给外界以清晰可读的异常信息

在项目开发中,提高可维护性,为修改程序错误提供线索

异常的处理,使程序能够完整地运行

 

异常三种的三种格式

try语句不能单独存在,可以和catch、finally组成 try...catch...finally、try...catch、try...finally三种结构。

第三这种结构,有些资料上写,如果写了try没有写catch处理语句,编译会报错,其实第三个不写catch是把异常给抛出去了,这里不写catch只是表明这里不处理而已,所以必须要在方法上声明抛异常,并且,要在调用处try捕获异常和catch处理异常

 

try、catch、finally三个代码块中变量的作用域分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面

 

问题:什么时候抛,什么时候try

问题:是不是一检测到异常,程序立马抛出异常,程序不再往下执行了呢?

我的理解:

这个说法不严谨和不准确

程序运行的时候,有异常检测机制,抛出异常后,不是程序停止运行,而是try里面的的停止运行,并且抛出异常,如果下面有catch,那么try外的接着运行

 

如何定义异常信息呢?

因为父类中已经把异常信息的操作都封装好了。

所以子类只要在构造时,将异常信息传递给父类通过super语句。

那么就可以直接通过getMessage方法获取自定义的异常信息。

建议在捕获到异常的时候使用e.printStackTrace(),打印到控制台

 

自定义异常:

必须是自定义类继承Exception。

 

继承Exception原因:

异常体系有一个特点:因为异常类和异常对象都被抛出。

他们都具备可抛性。这个可抛性是Throwable这个体系中独有特点。

 

只有这个体系中的类和对象才可以被throws和throw操作。

 

throws和throw的区别

throws使用在函数上。

throw使用在函数内。

 

throws后面跟的异常类。可以跟多个。用逗号隔开。

throw后跟的是异常对象。

总结:子类不能抛出比父类的异常更大的异常

 

自定义异常

class MyException extendsException//要继承Exception

{

         publicMyException(String msg)

         {

                   super(msg);

         }

}


 

自定义异常在抛出的时候要创建异常对象

throw newMyException("msg");//要用new创建一个异常

 

Exception型异常在程序中必须使用try…catch进行处理

RuntimeException型异常可以不使用try…catch进行处理,如果发生异常,则直接交由JVM处理

如果是运行时RuntimeException异常,方法上可以不声明,调用处可以不处理,但是,如果是Exception型异常,则必须要在方法上声明,调用处必须处理。所以,不是所有异常都必须声明,也不是所以异常都必须处理

 

Finally{}在任何时候都可以执行到,但是有一种例外请款,就是执行到系统退出语句System.exit(0),这个时候,虚拟机结束,不执行Finally{}

 

 

 

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.youkuaiyun.com 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值