遇到错误唯一的办法重启。
Thread(中文意思是线程) Thread.sleep(3000) 就是程序运行到这里暂停3秒中的意思
unchecked Exception 不用自己写
checked Exception 要手动捕获
未遇到异常 catch方法块会跳过 遇到异常 catch语句块会执行
finally 块遇没遇到异常都会执行。
只带一个catch行 只带一个finally有时候行有时候不行
因为如果父类对象放前面 子类对象就是父类对象 就当执行过了。。不会执行到后面的子类对象异常块
为什么要finally块 主要用来执行垃圾回收和释放资源等操作。
现在也许你不觉得什么,但是当你开发多线程的服务器程序时,很多客服端访问会造成很多个对象和资源的使用 如果不能及时关闭 用不了多久就会卡卡。崩溃。
Alt Shift Z 环绕属性 有异常捕获块自动生成 multi 多种 还有循环语句块等
Alt Shift S 构造方法啥的
Alt Shift W
有如下
try catch finally return执行顺序
不过finally里面一般不要加return 语句 (但是可以加 会覆盖上面的返回值赋值)
加了个 throw ,就不会显示异常。throws 的意思是 谁调用我这个方法谁处理,我不管。如下:
也可以由此得 为什么有些方法的使用要加try catch 因为throws了
这里再讲一下if else 和异常的区别 区别在于 异常可以提示是出来什么问题 throw啥啥异常等 而if else需要自己思考。
如上:可以抛出多个异常 处理就多个异常处理
注意哈 main方法也可以往上面抛出异常 这就丢给了JRE了 但是不推荐这样用。
个数是指类型 如下
最后句 Io异常继承字Exception ParseException继承自RuntineException 运行时异常啦不知道我拼写错没
而IO异常和运行时异常都是异常的不同直接子类 所以类型个数超范围了 大于父类A的1个。。。
可以自己new对象 抛出。以后讲 知道就行现在。
自定义异常:
简单说就是写异常类嘛 看看大部分异常类 就继承父类 和写几个构造方法就ok啦
Ctrl T查看类的层次结构 右键里有 还有那个call啥啥 查看方法调用过程的
异常使用建议:
小粒度处理就是 一行加个异常 这样不好 可以统一起来往上面抛异常一起弄
高层处理就是 谁调用谁处理 (目的在于稳定 总不能随便使用异常吧,,很乱
小小总结一下哈:Throwable类有两个直接子类,Error和 Exception 其中Error表示程序员不能处理的异常,例如虚拟机错误;直接重启吧。Exception类表示程序员可以处理的异常,例如指定文件不存在。
Exception类子类可以划分为两类 可控式异常和运行时异常 其中可控式异常一般由程序员进行处理,运行时异常一般可以避免发生。
使用try catch finally处理异常 catch和finally至少存在一个
throws关键字在方法声明时抛出异常 throw在方法中抛出异常
异常增加开销请不要随意使用。 理解不够深刻 ,还有后文