1.异常 Throwable

异常体系:

  • |——Throwable (实现类描述java的错误和异常)
    • |——Error (错误)
    • |——Exceprion (异常)
      • |——RuntimeException (运行时异常)
      • |——非运行时异常(编译时异常/受检异常)

 

Throwable常用方法

  • toString()    返回当前异常对象的完整类名
  • getMessage()    返回的是当前创建Throwable传入的字符串信息
  • printStackTrace()    打印异常的栈信息

捕获e.printStackTrace()的具体内容

try {
} catch (SftpException e)
    e.printStackTrace();
    StringWriter sw = new StringWriter();
    e.printStackTrace(new PrintWriter(sw));
    log.info(" 错误原因:" + sw.toString());
}

Error (错误):一般是jvm或硬件引发的问题,一般不通过代码去处理。

Exceprion (异常):需要通过代码去处理

    RuntimeException (运行时异常):如果一个方法内部抛出了一个运行时异常,方法上可以声明也可以不声明,调用者可以处理也可以不处理(运行时异常都是可以通过良好的编程习惯避免的,所以没有严格要求处理)

 

    编译时异常:如果一个方法内部抛出了一个编译时异常对象,那么方法上必须要声明,调用者也必须要处理


异常的处理:


1.捕获处理:

try {

可能发生异常的代码 

} catch ( 捕获的异常类型  变量名 ) {

处理异常的代码

}

注意细节:

  1. try块代码出现异常,经过处理后,try-catch块外面的代码可以正常执行
  2. try块中,异常代码之后的代码不会执行
  3. 一个try块后面可以跟多个catch块
  4. 一个try块可以捕获多种异常类型,但是捕获的异常类型必须从小到大捕获,否则编译报错

2.抛出处理:

方法定义  throws Exception1, Exception2,···,··· {  
//声明异常,throws 后跟异常类,可以一次声明多种类型的异常,通知方法调用者

    throw new Exception1("抛出异常");  // throw关键字后面接受的是具体的异常的对象

}

注意细节:

  1. 如果一个方法内部抛出了一个异常,那么必须在方法上声明抛出
  2. 如果调用了一个声明抛出的方法,那么调用者必须要处理异常
  3. 如果一个方法内部抛出了一个异常对象,那么throw语句后面代码都不会执行了(一个方法遇到了throw关键字,方法会马上停止执行
  4. 在一种情况下,只能抛出一种类型异常对象

3.自定义异常:

自定义一个类继承Exception即可


finally块

使用前提:必须存在try块才能使用

finally是在return语句执行之后,返回之前执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值)

 

finally块代码在任何情况下都会执行,除了jvm退出的情况【不管有木有出现异常,finally块中代码都会执行;当try和catch中有return时,finally仍然会执行】

适合做资源释放的工作,可以保证资源文件在任何情况下都被释放。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xyc1211

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值