RuntimeException 运行时异常 逻辑异常
CheckedException 已检查异常
RuntimeException 运行时异常 逻辑异常
package cn.cn.异常;
/*
RuntimeException 运行时异常 逻辑异常
CheckedException 已检查异常
ArithmeticException 加判断
*/
public class TestException {
public static void main(String[] args) {
//ArithmeticException异常
int a=0;
int b=5;
//System.out.print(b/a);
//处理加判断
if(a!=0){
System.out.print(b/a);
}
//空指针异常NullPointerException
String str=null;
//str.length();
//处理加判断
if(str!=null){
str.length();
}
//异常.ClassCastException
Animal d=new Dog();
Cat c=(Cat)d;
//处理可以加判断
//数组越界NumberFormatException 处理加判断 使用正则判断
}
}
class Animal{
}
class Dog extends Animal{
}
class Cat extends Animal{
}
CheckedException 已检查异常 通过编译器处理
/*
try 语句用来存放的是可能是发生异常的语句
catch用来激发被捕获的异常
finall异常结构执行的部分
*/
try{
//程序代码快
}catch(Exception e){
//对 Exception 1的处理
}catch(Exception e){
//对 Exception 2处理
}final {
//程序快
}
·finally语句块
完整的异常处理语句一定要包含finally语句,无论程序中有无异常 并且无论try-catch语句是否顺利执行完 都会执行finally
自定义异常
- 创建自定义异常类
- 在方法中通过throw关键字抛出异常
- 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句来捕获并处理,否则在方法的声明通过throws关键字指名要抛出的异常
- 在出现异常方法的调用者中捕获异常
public class MyException extends Exception{ //创建自定义异常
public MyException(String ErrorMessage){ //钩造方法
super(ErrorMessage); //父类构造方法
}
}
在方法中抛出异常 使用throws关键字抛出异常(常用)
Java常见的异常
异常类 | 说明 |
---|---|
ClassCatExcetion | 类型转换异常 |
ClassNotFoundExceotion | 未找到相应类异常 |
ArithmeticExcetion | 算数异常 |
ArrayIndexOutOfBoundsExcetion | 数组下标越界异常 |
ArrayStoreExcetion | 数组中包含不兼容值抛出的异常 |
SQLExcetion | 操作数据库异常类 |
NullPointerExcetion | 空指针异常 |
NoSuchFieldExcetion | 字段未找到异常 |
NoSuchMethodExcetion | 方法未找到抛出的异常 |
NummberFormatExcetion | 字符串转化为数字抛出的异常 |
NegativeArraySizeExcetion | 数组元素个数为负数抛出异常 |
StringIndexOutOfBoundsExcetion | 字符串索引超出范围抛出的异常 |
IOExcetion | 输入输出异常 |
IllegalAccessExcetion | 不允许访问某类异常 |
InstantiationExcetion | 当程序试图使用Class类中的newLNstance()方法创建一个类的实例,而指定的类对象无法被实列化时,抛出的异常 |
EOFExcetion | 文件以结束异常 |
FileNotFoundExcetion | 文件未找到异常 |
运行时异常
种类 | 说明 |
---|---|
NullPointerExcetion | 空指针异常 |
ArrayIndexOutOfBoundsExcetion | 数组下标越界异常 |
ArithmeticExcetion | 算数异常 |
ArrayStoreExcetion | 数组中包含不兼容值抛出的异常 |
NegativeArraySizeExcetion | 数组元素个数为负数抛出异常 |
SecurityExcetion | 安全性异常 |
IllegalArgumentExcetion | 非法参数异常 |
//package cn.笔记.异常;
//
//public class 常见异常 {
// 1、NullPointerException:
// 空指针异常,当操作一个 null 对象的方法或属性时会抛出这个异常。是一个很头疼的异常,因为它是运行时异常,不需要手动捕获,但运行时碰到这个异常会中断程序。
//
//2、OutOfMemoryError:
// 内存溢出异常,这不是程序能控制的,当需要分配的对象的内存超出了当前最大的堆内存,需要调整堆内存大小(-Xmx)以及优化程序。
//
//3、IOException:
// IO,即:Input、Output,我们在读写磁盘文件、网络内容的时候经常会生的一种异常,这种异常是受检查异常,需要进行手工捕获。
//
// 比如读写文件是需要抛出异常:
//
// public int read() throws IOException
// public void write(int b) throws IOException
//4、FileNotFoundException:
// 找不到文件异常,如果文件不存在就会抛出这种异常。
//
// 如定义输入输出文件流,文件不存在会报错:
//
// public FileInputStream(File file) throws FileNotFoundException
// public FileOutputStream(File file) throws FileNotFoundException
// FileNotFoundException 其实是 IOException 的子类,同样是受检查异常,需要进行手工捕获。
//
// 5、ClassNotFoundException:
// 类找不到异常,Java开发中经常遇到的一种异常,这是在加载类的时候抛出来的,即在类路径下不能加载指定的类。它是受检查异常,需要进行手工捕获。
//
// 复制代码
// public static <T> Class<T> getExistingClass(ClassLoader classLoader, String className) {
// try {
// return (Class<T>) Class.forName(className, true, classLoader);
// }
// catch (ClassNotFoundException e) {
// return null;
// }
// }
// 复制代码
//6、ClassCastException:
// 类转换异常,将一个不是该类的实例转换成这个类就会抛出这个异常。
//
// 如将一个数字强制转换成字符串就会报这个异常:
//
// Object x = new Integer(0);
//System.out.println((String)x);
// 它是运行时异常,不需要手工捕获。
//
//7、NoSuchMethodException:
// 没有这个方法异常,一般发生在反射调用方法的时候:
//
//
// public Method getMethod(String name, Class<?>... parameterTypes)
// throws NoSuchMethodException, SecurityException {
// checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), true);
// Method method = getMethod0(name, parameterTypes, true);
// if (method == null) {
// throw new NoSuchMethodException(getName() + "." + name + argumentTypesToString(parameterTypes));
// }
// return method;
// }
//
// 它是受检查异常,需要手工捕获。
//
// 8、IndexOutOfBoundsException:
// 索引越界异常,当操作一个字符串或者数组的时候经常遇到的异常。
//
//
//
//
//
// 9、ArithmeticException:
// 算术异常,发生在数字的算术运算时的异常,如一个数字除以 0 就会报这个错。
//
// 此异常虽然是运行时异常,可以手工捕获抛出自定义的异常,如:
//
//
// public static Timestamp from(Instant instant) {
// try {
// Timestamp stamp = new Timestamp(instant.getEpochSecond() * MILLIS_PER_SECOND);
// stamp.nanos = instant.getNano();
// return stamp;
// } catch (ArithmeticException ex) {
// throw new IllegalArgumentException(ex);
// }
// }
//
//10、SQLException:
// SQL异常,发生在操作数据库时的异常。
//
// 如下面的获取数据库连接时:
// public Connection getConnection() throws SQLException {
// if (getUser() == null) {
// return DriverManager.getConnection(url);
// } else {
// return DriverManager.getConnection(url, getUser(), getPassword());
// }
// }
//
// 它是受检查异常,需要进行手工捕获。
//}
来源:CSDN
作者:语录晨话
链接:https://blog.csdn.net/weixin_45736498/article/details/103653599