异常的概念
简介:异常是阻止当前方法或者作用域继续执行的问题,在程序中是指出现各种不期而至的状况:如文件找不到,网络连接失败,非法参数等等,对与异常java把他转换为对象,专门有一个处理异常的祖宗类Throwable类.
关于java中异常的5个关键字:try catch finally throw throws
异常的三种分类
异常基本分为三种分类:
- 检查性异常:不能通过编译时期的异常,通常是文件找不到,或者文件丢失,需要手动抛出异常。
- 运行时异常:运行时异常表示只有在运行程序时才会报出的异常,如:算术异常,和递归的内存溢出等等。
- 错误(Error):错误不是异常 ,而是脱离了程序员的控制,错误在代码中通常被忽略,如当栈溢出时一个错误就发生了他们在编译时期是检查不到的.
异常的基本使用
异常Throwable类是所有异常类的超类,他下面有两个大类一个是Error(错误)类和Exception(异常)如图:
Error(错误):错误是无法被程序本身处理的问题.
Exception(异常):异常能被程序本身可以处理,如:算数异常
抛出异常:出现了异常可以向上抛出,通常用来告诉上面的程序有异常,让别的程序去处理,使用throw来抛出.
捕获异常:通常用于捕捉肯出现异常的代码,使用try-catch或者try-catch-finally去捕获,基本语法为:
try{
//可能出现异常的代码
}catch(异常类型 异常名){
//出现异常后怎么解决的代码
}finally{
//出不出异常都会执行的代码
}
自定义异常
自定义异常需要去继承Exception类,如;
public class Test extends Exception{
String a;
//有参构造
public Test(String a){
this.a=a;
}
@Override
public String toString() {
return "该用户"+a+"已被使用";
}
}
使用该异常类:
import java.util.ArrayList;
import java.util.Scanner;
public class MyTest {
public static void main(String[] args) throws Test {
//定义一个创建名字的小程序
ArrayList list=new ArrayList();//已经存在的用户名
list.add("张三");
Scanner scanner=new Scanner(System.in);
System.out.print("请输入要创建的用户名:");
String a=scanner.nextLine();
for (int i = 0; i < list.size(); i++) {
if(list.get(i).equals(a)){
throw new Test(a);
}
}
list.add(a);
//打印lst
for (Object l:list){
System.out.println(l);
}
}
}
常见的异常:
序号 | 异常名称 | 异常描述 |
---|---|---|
1 | java.lang.ArrayIndexOutOfBoundsException | 数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。 |
2 | java.lang.ArithmeticException | 算术条件异常。譬如:整数除零等。 |
3 | java.lang.SecurityException | 安全性异常 |
4 | java.lang.IllegalArgumentException | 非法参数异常 |
5 | java.lang.ArrayStoreException | 数组中包含不兼容的值抛出的异常 |
6 | java.lang.NegativeArraySizeException | 数组长度为负异常 |
7 | java.lang.NullPointerException | 空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等。 |