6.异常
异常
实际工作中,遇到的情况不可能是非常完美的。比如:写的某个模块,用户输入不符合你的要求,打开某个文件但格式不对等。
异常:Exception
异常指程序运行中出现的不期而至的各种状况
异常发生在程序运行期间,它影响了正常的程序执行流程
三种类型的异常
1.检查性异常:最具有代表性的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如打开一个不存在文件时,一个异常就发生了,这些异常在编译器时不能被简单忽略。
2.运行时异常:运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
3.错误Error:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,他们在编译也检查不到的。
异常处理框架
Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类
Exception
Exception分支中有一个重要的子类:RuntimeException(运行时异常)
1.ArrayIndexOutOfBoundsException(数组下标越界)
2.NullPointerException(空指针异常)
3.ArithmeticException(算数异常)
4.MissingResourceException(丢失资源)
5.ClassNotFoundException(找不到类)
这些异常不是检查异常,程序中可以选择捕获处理,也可以不处理
这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这些类异常的发生
异常处理机制
1.抛出异常
2.捕获异常
异常处理五个关键字:
try:尝试处理
catch:捕获,有try一般就会有catch
finally:无论有没有异常,都会执行。善后工作
throw、throws:主动抛出异常,用在方法中
可以使用catch捕获多个异常,但顺序要从小到大
快捷键:Ctrl + Alt +T
自定义异常
//自定义的异常类
public class MyException extends Exception{
//传递数字,大于10抛出异常
private int detail;
public MyException( int a) {
this.detail = a;
}
//toString:异常的打印信息
@Override
public String toString() {
return "MyException{" + "detail=" + detail + '}';
}
}
使用自定义的异常
public class TestMyException {
//可能会存在异常的方法
static void ji(int a) throws MyException{ //1.首先调用方法,接受参数11
System.out.println("传递的参数为:"+a); //2.输出参数
if (a>10){ //3.满足抛出异常条件,抛出异常
throw new MyException(a);
}
System.out.println("OK");
}
public static void main(String[] args) {
try {
ji(11);
} catch (MyException e) { //4.异常被捕获,执行捕获块内程序
System.out.println("MyException=>"+e);
}
}
}

浙公网安备 33010602011771号