Dayn+1

什么是异常

比如你使用java程序开发了一个计算器,可以让用户进行计算,但是在计算除法的过程中(程序运行过程中),用户把除数设为0, 这时我们的程序执行就会出错(大家都读过小学,知道除法中,除数不能为0),即抛出异常。异常情况是指程序在运行时,可能由与外部系统的条件变更(与我们一厢情愿所设想的不一设)而导致程序可能会出错的情况,如我们的代码要连结数据库,但数据库未启动,要创建目录,操作系统上却己存在同名的真实文件;即所谓异常是指可能(仅是可能)由与外部系统的,导致程序可能出错(中断运行)的原因。

try-catch:

try{
可能抛出异常的代码. . .
//如果没有问题出理,执行如下面的代码
(A)其它计算代码…
}catch(Exception ef){
  //如果出现异常后执行的代码:
(B)出了异常情况的计算代码. . .
}

当任意两边不大于另一边时抛出异常,用catch接收异常

当不管是否异常时都执行方法,则使用finally

需要注意的是:

  1. try catch块中变量做用域:try块中定义的变量符合我们前面所讲的变量做用范围的规则,即变量只能在限定自己最近的一对大括号内使用;即try catch块内一对大括号中定义的变量不能在后面的代码块内使用;

  2. 方法返回值:如果方法有定义的返回值,这个方法就有可以在正常执行时有一个返回值,或在catch到异常时有个返回值---不能仅仅只在try块中return一个返回值。

  3. 要注意的是,并不是所有的异常都强制需要try catch,在java中,异常分为强制检测和非强制检测二种

  4. 如果某段代码可以会出现多个异常,那么我们可以使用一个try后面接多个catch来进行处理,如果多个异常有继承关系,那么我们应该先写子类,再写父类

1:即在try...catch块中定义的变量为局部变量

2:try...catch需要同时用void或返回值接收(相当于for循环或switch里每个判断条件处理结果返回值类型相同)

 3:try...catch不是必须的,但是有try必有catch

 4:即具体异常写在前面,总异常Exception e或子异常的父类写在最后

 

throw 与throws

throw new 异常类型([异常信息]);

throws 异常类型1,异常类型2…

自定义异常

创建自定义异常,需要继承Exception 或其子类。习惯上包装一下父类的构造方法。

在编码规范上,一般将自定义异常类的类名命名为 XXXException,其中 XXX 用来代表该异常的作用,如 <class><自定义异常名><extends><Exception>

自定义异常类一般包含两个构造方法:一个是无参的默认构造方法,另一个构造方法以字符串的形式接收一个定制的异常消息,并将该消息传递给超类的构造方法。

 疑问1:

 为什么在抛出异常后执行输出语句会直接报错?

疑问2:

既然在throw new Exception()时会输出异常信息,那catch时执行输出语句岂不是多此一举?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值