网站建设项目付款方式,制作网页界面工具,国外不织布网站做的教具,合肥网站建设开发在java开发与代码运行过程中#xff0c;我们经常会遇到需要处理异常的时候。有时候是在用编辑器写代码#xff0c;点击保存的时候#xff0c;编辑器就提示我们某块代码有异常#xff0c;强制需要处理。有时候是我们启动#xff0c;运行JAVA代码的时候的#xff0c;日志里…在java开发与代码运行过程中我们经常会遇到需要处理异常的时候。有时候是在用编辑器写代码点击保存的时候编辑器就提示我们某块代码有异常强制需要处理。有时候是我们启动运行JAVA代码的时候的日志里抛出了异常。
那么第一种编辑器提醒我们处理的其实就是编译器提醒我们处理的因为编辑器绑定了jdk才能提醒对代码的检查所以编辑器提醒的异常处理就是jdk里javac提醒的处理。这种异常我们称之为编译时异常这类异常都是强制需要处理的。否则程序根本运行不了。
第二种就是我们启动程序或者程序运行一段时间后日志里报出的异常提示这些异常就是运行时异常是代码在JVM上运行发生的异常。
现在我们大概总结一下编译时异常和运行时异常常见的都有哪些。 编译时异常我们可以这样处理
使用try…catch语句对异常进行捕获。
public void catchMostSpecificExceptionFirst() {try {doSomething(A message);} catch (NumberFormatException e) {log.error(e);} catch (IllegalArgumentException e) {log.error(e)}
} 使用throws关键字声明抛出异常调用者对其处理。
public void doNotDoThis() throws Exception {...
}
public void doThis() throws NumberFormatException {...
} 如果异常发生了则异常发生后面的代码不会执行直接进入到catch块
如果异常没有发生则顺序执行try中代码不会进入到catch中如果有finally最后还需要执行finally里面的语句
如果希望不管是否发生异常都执行某段代码比如关闭连接释放资源等则使用finally
public void closeResourceInFinally() {FileInputStream inputStream null;try {File file new File(./tmp.txt);inputStream new FileInputStream(file);// use the inputStream to read a file} catch (FileNotFoundException e) {log.error(e);} finally {if (inputStream ! null) {try {inputStream.close();} catch (IOException e) {log.error(e);}}}
}
可以捕获多个catch语句捕获不同的异常进行不同的业务处理要求父类异常在后子类异常在前范围小的在前范围大的在后 如果发生异常只会匹配一个catch
可以进行try-finally 配合使用这种用法没有捕获异常一旦发生异常程序会崩掉应用场景执行一段代码不管是否发生异常都必须执行某个业务逻辑
如果出现异常则try块中异常发生后try块中剩下的语句不在执行。将执行catch中的语句如果有finally最后还需要执行finally里面的语句
throw和throws的区别 运行时异常
运行时异常的特点是Java编译器不会检查它也就是说当程序中可能出现这类异常即使没有用try-catch语句捕获它也没有用throws子句声明抛出它也会编译通过。
但是在JVM去分配内存或者执行器在java的逻辑运行时就可能遇到不合理的异常。
运行时异常一般是特殊事情特殊处理。
总结编译时异常其实就是前人总结的编写程序经常会遇到的漏洞或者异常提前提醒程序员进行处理。
而运行时异常有点像个性化异常千奇百怪比较难统一识别所以放在运行时识别。