异常
异常
- 什么是异常
- 异常体系结构
- Java异常处理机制
- 处理异常
- 自定义异常
- 总结
Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类
这些异常类分为两大类,错误Error和异常Exception
Error(错误)
大多数错误与代码编写者所执行的操作无关,一般是Java虚拟机运行错误
Exception(异常)
- 抛出异常
- 捕获异常
异常处理五个关键字:try catch finally throw throws
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;
try { //try监控区域
System.out.println(a/b);
}catch (ArithmeticException e){ //异常后执行
System.out.println("程序出现异常,变量b不能为0");
}finally { //不论异常不异常都会执行,用于处理善后工作
System.out.println("finally");
}
}
}
catch(想要捕获的异常类型),最高的是Throwable,所有异常都可以检测到
e.printStackTrace();输出系统的异常
throw和throws的区别
throw可以主动抛出异常以使程序停止,而try catch语句在发现异常后仍会正常执行
throws是在声明方法时使用,throws如果在方法体中不用try catch捕获异常而采用直接抛出的方法时需要在声明方法时通过throws关键字指明要抛出给方法调用者的异常
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;
try{
new Test().test(1,0);
}catch (ArithmeticException e) {
e.printStackTrace();//输出异常信息
}
}
public void test(int a , int b) throws ArithmeticException{//throws如果在方法体中不用try catch捕获异常而采用直接抛出的方法时需要在声明方法时通过throws关键字指明要抛出给方法调用者的异常
if (b == 0){
throw new ArithmeticException();
}else {
System.out.println(a/b);
}
}
}
自定义异常
MyException.java
package exception;
public class MyException extends Exception{
//传递数字>10
private int detail;
public MyException(int a){
detail = a;
}
//toString:异常的打印信息
@Override
public String toString() {
return "MyException{" + "detail=" + detail + '}';
}
}
Test.java
public class Test {
//可能会存在异常的方法
static void test(int a) throws MyException{
System.out.println("传递的参数为:"+ a);
if(a>10){
throw new MyException(a); //抛出
}
System.out.println("OK");
}
public static void main(String[] args) {
try {
test(11);
}catch(MyException e){
System.out.println("MyException=>"+e);
}
}
}
输出结果为
传递的参数为:11
MyException=>MyException{detail=11}

浙公网安备 33010602011771号