异常机制、处理,自定义异常类
异常分类
- 检查异常:代表是用户错误或者问题引起的异常,在编译时不能简单的被忽略。
- 运行异常:可能被程序员忽略的异常,在编译时可以被忽略
- 错误:错误不是异常,是脱离程序员控制的问题,错误在代码中经常被忽略
错误
Exception异常
异常处理机制
异常处理的关键字
- try:尝试处理异常
- catch:捕获异常
- finally:不管是否捕获处理异常都执行
- throw:抛出
- throws:抛出
异常处理实例
- 没有经过try和catch捕捉的异常,在程序运行到该位置时,程序会中断运行,经过处理后的异常会通过catch进行捕捉,进而执行catch对应的代码,避免因为异常导致程序中断执行。
- 多重catch对异常进行捕捉需要根据异常类型的大小从小到大的捕捉。
异常处理代码:
package com.oop.Demo06;
public class Exception1 {
public static void main(String[] args) {
int a=1,b=0;
try {
//对接下来这带try这个代码片中的代码进行监控。
System.out.println("还行"+a/b);
}
//catch(异常处理类型 e){处理的方法体}
catch (Exception e){
System.out.println("b为除数不能为0");
}catch (Throwable t){
System.out.println("异常类型在Throwable中没在Exception中");
}
finally {
System.out.println("执行力finally");
}
}
}
异常的抛出
package com.oop.Demo06;
public class Exception1 {
public static void main(String[] args) {
new Exception1().test(1,1);
//解决抛出的异常
try {
new Exception1().test1(1,0);
} catch (ArithmeticException e) {
e.printStackTrace();
System.out.println("这里是抛出的异常");
}
}
public void test(int a,int b){
if (b==0){
throw new ArithmeticException();//在方法中主动将异常抛出
}else
System.out.println(a/b);
}
//假设在方法中无法处理异常,就将异常进行抛出在try,catch中解决异常。
public void test1(int a,int b) throws ArithmeticException{
if (b==0){
throw new ArithmeticException();//在方法中主动将异常抛出
}else
System.out.println(a/b);
}
}
自定义异常类
- 自定义异常类实际就是继承了exception的类
- 多的不说,少的不唠,直接示例代码:
自定义异常类MyException:
package com.oop.Demo06;
/**
自定义异常类,实际就是对exception进行了继承的类
*/
public class MyException extends Exception{private int de;
public MyException(int de) {
this.de = de;
}
//通过toString对结果进行打印,这里的结果是调用自定义异常类的类所传递的值@Override
public String toString() {return "MyException{" +
"de=" + de +
'}';
}
}
MyExceptionTest测试类:
package com.oop.Demo06;
public class MyExceptionTest {
static void test(int a) throws MyException {
System.out.println("传递的参数为"+a);
if(a>10){
throw new MyException(a);//这可以选择使用throws对异常进行抛出或者使用try,catch对异常进行捕捉。
}
System.out.println("ok");
}
//测试程序对test方法调用并验证自定义函数是否正确
public static void main(String[] args) {
try {
test(11);
} catch (MyException e) {
System.out.println("MyException=>"+e);
//这里的e是在自定义函数中的ToString函数中所输出的值
}
}
}
还没有评论,来说两句吧...