当前位置: 首页 > news >正文

异常的学习

异常分为编译时期异常与运行时期异常

编译时期异常运行前必须处理,否则代码报错

除了RuntimeException和他的子类,其他都是编译时异常

运行时期异常运行时报错,一般是由参数传递错误导致的报错

异常的作用:

1.异常使用来查询bug的关键参考信息

2.异常可以作为方法内部的一种特殊返回值,以便通知调用者底层的执行情况

异常的处理方法

1.虚拟机默认的处理方式

把异常的名称,原因,出现位置输出在控制台,并停止进程

2.自己处理(捕获异常)

格式:

try{

        可能出现的异常的代码;

} catch(异常类名 变量名){

        异常的处理代码;

}

目的:代码出现异常时,可以继续运行

int[] arr = {1, 2, 3, 4, 5};try {//可能出现异常的代码System.out.println(arr[10]);//此处出现了异常。就会在这里创建一个                                ArrayIndexOutOfBoundsException对象//new ArrayIndexOutOfBoundsException()//拿着这个对象到catch里面的小括号里比,哭哭小括号中的变量是否可以接收//如果能接收,就表示该异常被捕获,执行catch里的代码//执行完毕后继续执行try catch体系下面的代码
} catch (ArrayIndexOutOfBoundsException e) {//如果出现了异常该如何处理System.out.println("索引越界了");
}
System.out.println("?????????");

如果try中可能会遇见多个问题,怎么执行?

碰到第一个异常就会跳转到catch,不会运行try接下来的语句

如果会有多个异常,就应该有多个catch接受

如果这些异常存在父子关系的话,父类一定要写在下面

3.交给调用者

异常类常用的方法

Throwable的成员方法


            //获取异常信息
/*            String message = e.getMessage();System.out.println(message);*//*            //打印异常String s = e.toString();System.out.println(s);*///打印异常,仅仅是打印信息,不会停止程序运行e.printStackTrace();

抛出处理

throws

注意:写在方法定义出,表示声明一个异常,告诉调用者,使用本方法可能会有哪些异常

public void 方法() throws 异常1,异常2.。。{

}

编译时异常:必须要写

运行时异常:可以不写

 public static void main(String[] args) {/** throws* */int[] arr = {};try {System.out.println(getMax(arr));} catch (NullPointerException e) {System.out.println("空指针");} catch (ArrayIndexOutOfBoundsException e) {System.out.println("索引越界");}System.out.println("????");}public static int getMax(int[] arr) throws NullPointerException, ArrayIndexOutOfBoundsException {if (arr == null) {//手动创建一个异常对象,并把这个异常交给调用者处理throw new NullPointerException();}if (arr.length == 0) {throw new ArrayIndexOutOfBoundsException();}int max = arr[0];for (int i = 0; i < arr.length; i++) {if (arr[i] > max) {max = arr[i];}}return max;}
}

throw

注意:写在方法内,结束方法,手动抛出异常对象,交给调用者,方法中下面的代码不再执行了

public void 方法(){

        throw new 异常();

}

自定义异常

1.定义异常类

2.写继承关系

3.写空参构造

4.带参构造

public class NameFormatException extends RuntimeException{//技巧//NameFormat当前异常名字//Exception表示当前是个异常类//运行时异常RuntimeEcxeption 核心 参数错误导致的问题//编译时异常Exception 核心 提醒程序员检查本地信息public NameFormatException() {}public NameFormatException(String message) {super(message);}
}
public void setName(String name) {int len = name.length();if (len < 3 || len > 10) {throw new NameFormatException(name+" 格式有误!");}this.name = name;
}

http://www.lryc.cn/news/216761.html

相关文章:

  • 【洛谷 P1101】单词方阵 题解(深度优先搜索)
  • 教师减负神器
  • Web 开发之前的一些话
  • git快速入门!!! git的常用命令!!!
  • C++并发编程实战——01.并发与并行
  • PLC如何远程控制、调试?贝锐蒲公英二层组网功能一招搞定
  • 【大数据】-- flink kubernetes operator 入门与实践
  • 网络安全在代理技术中的实现与应用
  • Nginx搭配负载均衡和动静分离:构建高性能Web应用的完美组合
  • windows 运行 Mysql Command Line Client 自动关闭闪退原因分析
  • 在CATIA工程制图中自动生成尺寸
  • 蓝桥杯 (C++ 求和 等差数列 顺子日期 灌溉)
  • Spring AOP基于XML方式笔记整理
  • Docker HTTP(S) Proxy代理方式连接互联网
  • 华纳云:centos系统中怎么查看cpu信息?
  • 如何选择微信管理系统?
  • 文字的力量
  • 荒野大镖客emp.dll文件丢失的怎么办,快速修复游戏dll问题
  • 力扣labuladong——一刷day20
  • XSpirit 2智能边缘计算机使用测评
  • python实现MC协议(SLMP 3E帧)的TCP服务端(篇二)
  • nodejs express uniapp 图书借阅管理系统源码
  • 从零开始的目标检测和关键点检测(一):用labelme标注数据集
  • 【JVM经典面试题(五十二道)】
  • 高效管理:在文件夹名称左边添加关键字,实现批量重命名
  • Leetcode1122. 数组的相对排序
  • CN考研真题知识点二轮归纳(5)
  • windows系统 生成RSA密钥对
  • 大文件分片上传并发
  • 数据结构——基于顺序表实现通讯录