异常

异常:

从C开始,用if...else...来控制异常了但控制异常痛苦,同一个异常或者错误如果多个地方出现,每个地方都要做相同处理,

异常有两个来源,一是Java语言本身定义的一些基本异常类型,二是用户通过继承Exception类或者其子类自己定义的异常。一是Java运行时环境自动抛出系统生成的异常,而不管你是否愿意捕获和处理,它总要被抛出(比如除数为0的异常)。二是程序员自己抛出的异常,这个异常可以是程序员自己定义的。

用try,catch,finally

try语句块包住要监视的语句,如果在try语句块内出现异常,则异常会被抛出,你的代码在catch语句块中可以捕获到这个异常并做处理;

也通过throws关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw抛出异常对象。catch语句可以有多个,用来匹配多个异常,匹配上多个异常中一个后,执行catch语句块时候仅仅执行匹配上的异常。异常的变量名表示抛出异常的对象的引用,如果catch捕获并匹配上了该异常,那么就可以直接用这个异常变量名,此时该异常变量名指向所匹配的异常,并且在catch代码块中可以直接引用。

如果每个方法都是简单的抛出异常,那么在方法调用方法的多层嵌套调用中,Java虚拟机会从出现异常的方法代码块中往回找,直到找到处理该异常的代码块为止。然后将异常交给相应的catch语句处理。如果Java虚拟机追溯到方法调用栈最底部main()方法时,如果仍然没有找到处理异常的代码块,将按照下面的步骤处理:
        第一、调用异常的对象的printStackTrace()方法,打印方法调用栈的异常信息。
        第二、如果出现异常的线程为主线程,则整个程序运行终止;如果非主线程,则终止该线程,其他线程继续运行。

finally语句(最多一句)先于return语句执行

System.exit()的作用是终止当前正在运行的 Java 虚拟机。

一个方法调用了另外一个声明抛出异常的方法,那么这个方法要么处理异常,要么声明抛出。

throw用来抛出一个异常,在方法体内

方法声明的时候用了throws语句

自定义异常:

创建Exception或者RuntimeException的子类即可得到一个自定义的异常类。例如: public class MyException extends Exception{
  public MyException(){}
  public MyException(String smg){
   super(smg);
  }
 }


finally语句:

不管try语句成功与否,finally还是要执行;
除非在try{}catch中写入System.exit(0)或System.exit(1)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值