Exception:异常的产生和处理


异常:
对于这些错误,一般有两种解决方法,一是遇到错误就终止程序运行,另外一种就是由程序员编写程序时考虑到错误的检测,错误消息提示及错误处理。

捕获错误最理想的是编译期间,但是有的错误只有在运行时才会发生,
比如:除以0,数组下标越界,等。
分类:编译器异常和运行时异常

异常处理模型:抓抛
过程一:“抛” ,程序在正常执行过程中,一旦抛出异常,就会在代码异常处生成一个对应异常类,并将此对象抛出。
    一旦抛出对象后,后面的代码就不执行
     关于异常对象的产生:1 系统    自动生成的
                        2 手动生成一个异常对象,并抛出throw
过程二:“抓” 可以理解为异常处理 1 try -catch-finally 2 throws

1 try -catch-finally 2 throws

1 finally是可选
2 使用try将可能出现的异常代码包裹起来,在执行过程中一旦出现异常。就会生成一个对应异常的类去catch中匹配。
3 一旦try异常对象匹配到某个catch,就进入catch中进行异常处理。一旦处理完成就跳出当前try-catch结构
(没有finally情况)继续执行后面的代码
4 catch中异常类型如果没有父子关系,则在声明生无所谓上下
   如果满足父子关系则一定要把子类的放在上面声明,否则报错。
5 常用的异常对象处理方式 1 getMessage 2 printStackTrace
6 在try结构中声明的变量,在出try结构后不能再使用
7 try-catch-finally结构可以嵌套


体会:
开发中由于运行时异常比较常见。我们同行不针对运行时异常编写try-catch-finally
针对编译时异常,我们说一定要考虑异常的处理。

用try-catch-finally处理编译的异常,使得程序在编译时就不报错。但是运行时可能出错。
相当于我们使用try-catch-finally将一个编译时异常延迟到运行时异常。

异常处理方式二 throws

1 写在方法声明处,指明执行此方法,可能抛出的异常。一旦方法体执行时候出现异常。仍然会在异常处生成一个异常对象,
此对象满足throws后的异常类型,就会被抛出。异常后面的代码不会被执行

2 重写方法抛出的异常不能比父类抛出的更大,但是可以抛出更小。

3 try-catch-finally真正将异常处理
    throws方式只是将异常抛给了方法调用者,并没有真正处理
4 开发中如果选择try-catch-finally 还是throws
   如果父类中被重写的方法没有throws方式处理,则子类重写的方法也不能使用throws,
   意味着如果子类重写方法有异常,必须使用try-catch-finally处理。
   
5 执行的方法中,先后调用了另外几个方法,而这几个方法是递进的关系,则建议这几个方法throws抛出。
在方法调用的地方统一try-catch-finally处理。


6 自定义异常类
    1 继承现有的异常机构:RuntionException 或者Exception
    2 提供序列号,序列化和反序列化用处。
    3 提供几个重载的构造器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值