(目录)
1. 异常的介绍
Throwable有两个子类
1.错误 Error
- 不常见
- 基本上不能解决
- 尽量避免
2.异常 Exception
- 常见
- 可以定位,通过修改代码解决
- 不是编译失败问题,代码语法没有问题
2. 异常举例以及解决常见错误bug方案
- 定位错误:编写好程序后,运行程序,在输入运行结果栏中会存在异常提示,红色中蓝色链接,就能找到自己的代码错误
- 解决错误:先阅读异常提示,如果了解就直接修改,如果不了解那就搜索异常提示,了解问题所在,解决问题
最经典异常展示

3. RuntimeException
异常类有两个主要的子类:IOException 类和 RuntimeException 类
1.运行时异常
- 运行时异常可修改也可不修改,不会对项目运行产生影响
- 运行时异常像游戏漏洞,它不影响我们玩游戏,但是我们有一些漏洞可以捡,比如更新以后某个英雄的技能,在某个时间可以无限的放或者平A就能秒死人
2.非运行时异常
- 非运行时异常必须修改,因为这样会使得项目直接无法运行(现在的编译器比较智能,一定会让你
try catch) - 但是非运行时异常导致你进不去游戏
编译器中,运行时异常不会要求你捕获,但是非运行时异常会强制要求你捕获,所以我们在编写自定义异常的时候不会定成运行时异常
4. trycatch作用,闲扯淡诱骗毕业设计
try catch的作用
- 定位一个代码块的异常,运行完成这个代码块后,抛出这个代码块的异常
try catch可以搭配finally使用,意思是在捕获完成以后使用,也可以不搭配- 但使用
finally就必须搭配try catch - try catch的捕获内容可以自定义,可以让它抛出异常,也可以不让它抛出异常,所以根据这个小漏洞,你可以去骗毕业设计,但工作中绝对不能用!
抛出异常,正常捕获,运行可以通过,但会显示异常的结果和定位异常

不抛出异常,欺骗老师,运行还是通过,但不会定位异常


5. NullPointerException空指针异常
空指针异常的情况
Calling the instance method of a null object.调用空对象的实例方法Accessing or modifying the field of a null object.访问或修改空对象的字段Taking the length of null as if it were an array.将null的长度当作一个数组Accessing or modifying the slots of null as if it were an array.访问或修改null的插槽,就好像它是一个数组一样Throwing null as if it were a Throwable value.将null视为Throwable值
在有关对象判断类中会有抛出空指针异常的情况

6. throws
throw的作用就是抛出异常,有什么用呢?
- 通过捕获异常的功能,我们可以写判断或抛出异常的方法
- 在不通过的情况下提醒程序员,这样程序员可以快速的更改代码,以防止程序在后面出现更严重的问题

7. throws和trycatch区别,用途区别
throw和try catch的区别
throw是用来抛出异常的,而try catch是尝试运行并捕获- 两者结合可以达到十分好的效果
创建MyException类,Alt+Insert调出Generate,选择Constructor
全选Exception
由此抛出编译异常

在StringTest类中测试抛出异常
也可以通过调用函数的形式抛出异常
如果未抛出异常,则会显示编译异常,未报告的异常错误,必须对其进行捕获或声明以便抛出
而如果把MyException改成RuntimeException,就不会抛出编译异常,而是出现运行异常

8. 手把手教你编写装X自定义异常
创建ErrorCode接口
编写自定义异常代码
public interface ErrorCode {
/**
* 获取错误码
* @return
*/
String getcode();
/**
* 获取错误信息
* @return
*/
String getMsg();
}
创建MyCodeEnum枚举类
编写代码实现接口中的所有方法
public enum MyCodeEnum implements ErrorCode{
NOT_FOUND_PAGE("404","找不到网站资源"),
NOT_FOUND_FILE("888","找不到文件"),
NOT_O_TEN("bad", "只能求10以内的加法")
;
MyCodeEnum(String code, String msg) {
this.code = code;
this.msg = msg;
}
private final String code;
private final String msg;
@Override
public String getcode() {
return code;
}
@Override
public String getMsg() {
return msg;
}
}
创建MyException类继承RuntimeException
public class MyException extends RuntimeException{
public MyException(ErrorCode errorCode) {
super(errorCode.getMsg());
}
}
在String Test类中抛出异常,并可枚举选择异常形式












