代刷网站只做软件吗,婚恋网站模板,404wordpress,怎样更改wordpress主域名本文旨在以初学者的角度来学习Java异常的知识#xff0c;尽量简单#xff0c;一些细枝末节的知识不会讲述#xff0c;但不影响对知识的掌握。#xff08;比如try-catch可以嵌套#xff0c;不太会这么用#xff09;1.什么是异常我们先举个例子int x 10/0;在IDE里输入这样…本文旨在以初学者的角度来学习Java异常的知识尽量简单一些细枝末节的知识不会讲述但不影响对知识的掌握。比如try-catch可以嵌套不太会这么用1.什么是异常我们先举个例子int x 10/0;在IDE里输入这样一个statement静态检查没有发现其错误。运行后发现抛出算数类异常。Exception in thread main
java.lang.ArithmeticException: /by zero“异常”可以理解为字面意思通常指正常情况无法处理的异常事件。不过异常和错误不同程序员无法处理error如VirtualMachineError、OutOfMemoryError而Exception本身可以被程序解决如NullPointException、ArithmeticException、ArrayIndexOutOfBoundException异常与错误都继承了Throwable类整体关系如下图Exception大致可以分为两类RuntimeException 运行时异常 不可检查OtherException 编译期异常 可检查程序员最需要的关心的不是Error因为大部分遇到了就自认倒霉束手无策不是RuntimeException根本不可查而是OtherException可查异常可以通过try-catch捕获异常或者在方法上加throws抛出异常等2.异常处理机制上面谈到对于OtherException可查异常可以try-catch捕获或者throws抛出异常。接下来就详细介绍如何使用2.1 try-catchtry {//可能发生异常的地方}
catch (RuntimeException e1){// runtimeException}
catch (Exception e2){//Exception}
finally {//finally的内容一定会执行无论有没有Exception}try-catch中可以有多个catch处理时将依次匹配注意是依次依次依次重要的事情说三遍一旦先匹配上了后面的catch就不再匹配程序员需当心顺序这里有什么技巧欢迎大佬补充2.2 抛出异常使用方法比如有一个静态方法a在方法名后添加throws IOException这是一个可检查异常那么在调用它时作为一个可检查异常那么必须要对它try-catch的。如果像下面这样没有try-catch会出现什么情况呢public class Main {public static void a() throws IOException{System.out.println(a);}public static void main(String[] args){a();}
}根据第一节可知可检查异常是编译期异常我使用的工具Intellij IDEA就会报错不让我通过。只要给它套上一层外衣就好了try {a();}
catch (IOException e){//do something}catch里的Exception类一定要和方法抛出的类是同一个类或者有从属关系如IOException是Exception的子类有一个有趣的问题之前我说过只有可检查类有抛出异常的必要如果我throws一个不可检查的异常会发生什么呢public class Main {public static void a() throws RuntimeException{System.out.println(a);}public static void main(String[] args){a();}
}我在这里先不说结果感兴趣的小伙伴可以自己尝试一下。不理解结果的可以私信我注意throws与throw的区别我的理解是throws只是一个保障机制要求可检查异常必须得到检查。至于是不是真的抛出了异常还一定。throw才是真正的抛出异常就算有时候方法没有声明throws不过建议写可读性高。另外Java自定义异常类的原理类似都派生自Exception或某个更小的Exception有空单独写一篇自定义类的常见用法和注意事项。