try catch 学习

Try crash总结

1. 开发中,找bug常用方法有3个:

使用try catch

拦截所有crash到我指定的地方;

超多的LogLog有统一的控制开关。


2.  Java面向对象------>try{}catch(){}异常

在整个异常处理机制中,异常在系统中进行传递,传递到程序员认为合适的位置,就捕获到该异常,然后进行逻辑处理,使得项目不会因为出现异常而崩溃。

 语法格式:

 try{

//逻辑代码

}catch(异常类名 参数名){

//处理代码(出现该类型的异常时的处理代码)

}

 程序执行到 try-catch 语句时,如果没有发生异常,则完整执行 try语句块内部的所有代码,而 catch 语句块内部的代码不会执行,如果在执行时发生异常,则从发生异常的代码开始,后续的 try 语句块代码不会执行,而跳转到该类型的异常对应的 catch 语句块中。

 在实际程序中,也可以根据异常类型的不同进行不同的处理,这样就需要多个 catch 语句块,其结构如下:

 try{

//逻辑代码

} catch(异常类名 1 参数名 1){

//处理代码 1

} catch(异常类名 2 参数名 2){

//处理代码 2

}

……

在执行时,按照 catch 语句块书写的顺序从上向下进行匹配。

 如果异常类直接存在继承关系,则子类应该书写在上面,父类应该书写在下面,否则将出现语法错误。

 如果在程序执行时,所有的异常处理的代码都是一样的,则可以使用Exception 代表所有的异常,而不需要一一进行区分,示例代码如下:

 

try{

//逻辑代码

}catch(Exception e){

//统一的处理代码

}

 

在实际使用时,由于 try-catch的执行流程,使得无论是 try 块还是 catch块都不一定会被完全执行,而有些处理代码则必须得到执行,例如文件的关闭和网络连接的关闭等,这样如何在 try 语句块和 catch 语句块中都书写则显得重复,而且容易出现问题,这样在异常处理的语法中专门设计了finally语句块来进行代码的书写。语法保证 finally 语句块内部的代码肯定获得执行,即使在 trycatch 语句块中包含 return 语句也会获得执行,

语法格式如下:

finally{

//清理代码

}

 

该语法可以和上面的两种 try-catch语句块匹配,也可以和 try 语句匹配使用,

try 语句块匹配的语法格式如下:

try{

//逻辑代码

}finally{

//清理代码

}

 

这样在执行时,无论 try 语句块中的语句是否发生异常,finally 语句块内部的代码都会获得执行。

 而只书写 finally 而不书写 catch 则会导致异常的丢失.

语法:

 try{

//逻辑代码

}catch(异常类名 参数){

//异常处理代码

}finally{

//清理代码

}

 

这样就是整个异常处理部分的逻辑代码、异常处理代码和清理的代码成为一

个整体,使得程序代码更加显得紧凑,便于代码的阅读和使用。

最后,介绍一下使用异常处理语法时需要注意的问题:

 

1、书写在 try 语句块内部的代码执行效率比较低。所以在书写代码时,只把可能

 出现异常的代码书写在 try 语句块内部。

2、如果逻辑代码中抛出的异常属于 RuntimeException 的子类,则不强制书写在

try 语句块的内部,如果抛出的异常属于非 RuntimeException 的子类,则必须进

行处理,其中书写在 try 语句块是一种常见的处理方式。

3catch语句块中只能捕获 try 语句块中可能抛出的异常,否则将出现语法错误。

 

声明自定义异常类

异常类在语法上要求必须直接或间接继承 Exception,可以根据需要选择继承

Exception RuntimeException 类,这样也设定了自定义异常类的类型。如果直

接继承 Exception,则属于必须被处理的异常,如果继承 RuntimeException,则不

强制必须被处理。当然,可以根据需要继承其它 Exception 的子类。

 

在编码规范上,一般将异常类的类名命名为 XXXException,其中 XXX 用来

代表该异常的作用。

 

示例代码如下:

/**

* 自定义异常类

*/

public class MyException extends RuntimeException {}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值