For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
异常指程序运行中出现的不期而至的各种情况
发生在程序运行期间,影响了正常的程序执行流程
需要掌握的三种情况:
检查异常(非运行时异常):编译时可以看到,除了运行时异常,其他都是非运行时异常
不检查异常(运行时异常):编译时看不到,运行时才会出问题,这些异常其实就是我们的代码逻辑写错了,我们一定要手动改正
错误(不是异常):编译时检查不到,一般不是人为导致,而是jvm的原因,其实就是人写的代码让JVM出问题
Java把异常当做对象处理,并定义了一个基类java.lang.Throwable作为所有异常的超类
处理异常
抛出异常
捕获异常
五个关键字:try,catch,finally,throw,throws
//捕获异常的案例
public class lianxi {
public static void main(String[] args) {
int a=0;
int b=1;
try {//看是否有异常
System.out.println(b/a);
} catch (Exception e) {//捕获异常,参数为要捕获的异常类型,最大为throwable
e.printStackTrace();//打印错误的栈信息
} catch(Throwable t) {
//可以有多个捕获,但要注意异常类型是由小到大
} finally {
//善后工作,无论是否有异常都会执行
}
}
}
捕获异常快捷键:选中要捕获异常的语句,Ctrl+Alt+T
//抛出异常的案例
public class lianxi {
public static void main(String[] args) {
try {
new lianxi().test(1,0);
} catch (Exception e) {
e.printStackTrace();
}
}
//假设方法中处理不了这个异常,则在方法上抛出异常,让调用这个方法的来捕获它
public void test(int a,int b)throws ArithmeticException{
if (b==0){
throw new ArithmeticException();//主动的抛出异常,一般在方法中使用
}
}
}
自定义异常
使用Java内置的异常类可以描述在编程时出现的大部分异常情况,初次之外,用户还可以自定义异常,自己创建异常类,只需要继承Exception类即可
总结
处理运行时异常时,采用逻辑去合理规避,同时辅助try-catch合理处理
在多重catch块后面,可以加一个catch(Exception)来处理可能被遗漏的异常
对于不确定的代码,也可以加上try-catch,处理潜在的异常
尽量去处理异常,切忌只是简单的调用printStackTrace()去打印输出
具体如何处理异常,要根据不同的业务需求和异常类型去决定
尽量添加finally语句块去释放占用的资源
树越是向往高处的光亮,它的根就越要向下,向泥土向黑暗的深处。