1. 简介
1.java中所有异常均继承Throwable类,
2.Exception,Error继承于Throwable类,
3.RuntimeException、IOException等继承与Exception类
4.checked Exception与UnChecked Exception。RuntimeException属于Unchecked Exception,程序中可以不捕获;Exception的其他子类属于Checked异常,程序中必须捕获
2. 自定义异常
通常把代码中必须捕获的异常(Checked)继承于Exception,非必须捕获的异常(UnChecked)继承与RuntimeException
2.1 必须捕获异常(Checked Exception)
自定义异常NewException
/**
* @ClassName NewException
* @Author Gavin
* @Date 2020/4/6 下午9:24
**/
public class NewException extends Exception{
public NewException(String msg){
super(msg);
}
}
测试类
/**
* @ClassName Test
* @Author Gavin
* @Date 2020/4/6 下午9:35
**/
public class Test {
public static void test(int val) throws NewException{
int a = val;
if (a < 10){
throw new NewException("val 小于10");
}
}
/**
* 必须(二者选其一)
* (1)main方法继续抛出
* (2)try catch捕获
* @param args
*/
public static void main(String[] args) {
try {
test(5);
} catch (NewException e) {
e.printStackTrace();
}
}
}
不捕获编译不通过
效果
2.2 非必须捕获的异常(Unchecked Exception)
自定义异常OldException
package com.myException;
/**
* @ClassName OldException
* @Author Gavin
* @Date 2020/4/6 下午9:44
**/
public class OldException extends RuntimeException {
public OldException(String msg){
super(msg);
}
}
测试:
/**
* @ClassName Test
* @Author Gavin
* @Date 2020/4/6 下午9:35
**/
public class Test {
public static void test2(int val){
int a = val;
if (a < 10){
throw new OldException("val 小于10");
}
}
public static void main(String[] args) {
test2(5);
}
}
效果:不捕获也可以变异通过,运行时报错