error 和exception区别 python error 和 exception 有什么区别?
转载
一、概念
- 异常是指程序运行中出现的不期而至的各种状况,如:文件找不到,网络连接失败,非法参数等
- 异常发生在程序运行期间,影响正常的程序执行流程。
- 分为三大类:
- 检查性异常;
- 运行时异常;
- 错误ERROR:错误不是异常,是脱离程序员控制的问题,在代码中通常被忽视。如:栈溢出。
- Java将异常当对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。
- Java API已定义许多异常类,通常分为:错误ERROR,异常EXCEPTION。
- Error对象类由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。
- Exception有个重要子类RuntimeException(运行时异常)
- 数组下标越界;
- 空指针;
- 算数异常;
- 丢失资源;
- 找不到类异常。
- Error与Exception的区别:Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些时,Java虚拟机JVM一般会选择终止线程;
Exception通常情况下是可以被程序处理的,并且在程序中应该尽可能地去处理这些异常。
二、异常处理机制
- 抛出异常
- 捕获异常
- 异常处理五个关键字:try,catch,finally,throw,throws.
public static void main(String[] args) {
int a =0;
int b =1;
try {
new Test().test(a,b);
} catch (ArithmeticException e) {
throw new RuntimeException(e);
}
//ctrl+alt+t快捷键:选择包裹体
//try..catch.. ,可以不要finally,
//假设要捕获多个异常:异常类型要从小到大,否则报错。
try{
//System.out.println(b/a);
new Demo1().a();
}catch(ArithmeticException e){ //catch(想要捕获的异常类型) 捕获异常;
System.out.println("程序出现异常"+e);
}catch(Error e){
System.out.println("ERROR");
}catch(Throwable e){
System.out.println("Throwable异常");
}
finally { //finally处理善后工作,比如关闭某些资源
System.out.println("finally");
}
}
public void a(){
b();
}
public void b(){
a();
}
//方法头内用throws抛出异常
public void test(int a,int b) throws ArithmeticException{
if (a==0) {
throw new ArithmeticException();//主动抛出异常,一般在方法中使用
}else{
System.out.println(b/a);
}
}
三、实际应用中的经验总结
- 处理运行时异常时,设计逻辑去合理规避,同时辅助try~catch处理;
- 多重catch块后面,可以加一个catch(Exception)来处理可能被遗漏的异常;
- 对于不确定的代码, 也可以加上助try~catch处理潜在的异常;
- 尽量去处理异常;
- 具体如何处理异常,根据不同业务和异常类型决定;
- 尽量添加finally语句去释放占用的资源。IOScanner
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。