最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在的文件时,一个异常就发生了,这些异常在编译时不能被简单的忽略。
运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就产生了,他们在编译也检查不到的。
异常体系结构:Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。
Error一般是发生在虚拟机生成并抛出
Exception分支中有一个很重要的子类RuntimeException运行时异常,一般是程序逻辑错误引起的。
运行时异常主要有:
ArrayIndexOutOfBoundsException(数组下标越界)
NullPointerException(空指针异常)
ArithmeticException(算数异常)
MissingResourceException(丢失资源)
ClassNotFoundException(找不到类)
等异常
关键字try ,catch,finally,throw,throws
try{
//监控区域
}catch(Throwable e){
//捕获异常
e.printStackTrace//打印栈信息
}catch(){
//可以层层捕获异常,要捕获多个异常,需要从小到大
}finally{
//处理善后工作
}//trycatch是需要的,finally可以不需要
Idea快捷键:Ctrl+Alt+T, alt+enter
public void test(int a,int b){
if(b==0){//throw throws
throw new ArithmeticException();//主动的抛出异常,一般在方法中使用
}
}
public void test(int a,int b) throws ArithmeticException{
if(b==0){}
}
public class MyException extends Exception{
//传递数字>10
private int detail;
public MyException(int a){
this.detail = a;
}
//toString:异常的打印信息
@override
public String toString(){
return "MyException{"+detail+"}"
}
}
原文:https://www.cnblogs.com/Fruitwalking/p/14468183.html