异常介绍:

运行时异常非运行时异常

在编写可能会抛出异常的方法时,它们都必须声明为有异常。

一、throws关键字

1.声明方法可能抛出的异常;

2.写在方法名后面;

3.可声明抛出多个异常,异常名使用逗号隔开;

4.调用者可以处理异常,也可以继续抛出,交由它的调用者处理。

有风险、会抛出异常的程序:

static void pop() throws NegativeArraySizeException { // 使用throws关键字,将异常向上传递,由调用者负责处理
int[] arr = new int[-3]; // 创建数组
}

调用该方法的程序:

public static void main(String[] args) { // 调用方法
try {
pop(); // 调用pop()方法
} catch (NegativeArraySizeException e) {
System.out.println("pop()方法抛出的异常"); // 输出异常信息
e.printStackTrace();
}
}

二、throw关键字(用户自定义异常,需要通过throw关键字手动抛出)

1.生成并抛出异常;

2.在方法体内部;

3.只能抛出一个异常对象。

定义自己的异常类:

public class MyException extends Exception {    //创建自定义异常,继承Exception类
private static final long serialVersionUID = 1L; public MyException(String ErrorMessage) { // 构造方法
super(ErrorMessage); // 父类构造方法
}
}

异常发生时:

public class ThrowTest {
public static void main(String[] args) { // 主方法
int age = 0;
try {
if (age < 18) // 判断年龄是否小于18岁
throw new MyException("未成年人不能进入"); // 手动抛出异常,这两行就相当于除数等于0,只是除数等于0时系统会自动抛出异常,此时需要先判断再决定是否手动抛出异常
} catch (MyException e) {
e.printStackTrace();
}
}
}

注:如果在try语句块中有多句语句,在中间某句抛出异常后,try语句块中剩余的语句都不会执行,转而运行catch语句块。

finally语句块无论是否抛出异常都会执行,即使有在try和catch语句块中return语句也会先执行finally语句块。

三、异常处理规则:

1.catch和finally不能没有try;

2.try和catch之间不能有程序;

3.try一定要有catch或finally;

4.只带有finally的try必须要声明异常。

java异常处理中throws和throw的使用的更多相关文章

  1. Java异常处理中finally中的return会覆盖catch语句中的return语句

    Java异常处理中finally中的return会覆盖catch语句中的return语句和throw语句,所以Java不建议在finally中使用return语句 此外 finally中的throw语 ...

  2. Java异常处理中,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

    Java异常处理中,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 解答:会执行,在return前 ...

  3. java的异常抛出throws和throw的简单使用

    前提: 当在程序测试时,如果你需要定义一个自己的异常,而非现在已经存在的异常,这个时候你需要用到throws和throw,try-catch只是一个简单的捕获异常的过程. 代码如下: package ...

  4. JAVA基础学习之throws和throw的区别、Java中的四种权限、多线程的使用等(2)

    1.throws和throw的区别 throws使用在函数外,是编译时的异常,throw使用在函数内,是运行时的异常 使用方法 public int method(int[] arr) throws ...

  5. java-异常-编译时检测异常和运行时异常区别(throws和throw区别)

    1 package p1.exception; 2 /* 3 * 对于角标是整数不存在,可以用角标越界表示, 4 * 对于负数为角标的情况,准备用负数角标异常来表示. 5 * 6 * 负数角标这种异常 ...

  6. java中的抛出异常throws与throw

    throws与throw throws是方法可能抛出异常的声明.(用在声明方法时,表示该方法可能要抛出异常)语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{.. ...

  7. 异常处理中try,else,finally含有return的情况解析

    直接看代码,拿到你的py下运行测试一下就 明白了. 例一: def f(): try: print() finally: print() print(f()) # 若注释掉finally内的retur ...

  8. Java异常题库

    一.填空题 __异常处理__机制是一种非常有用的辅助性程序设计方法.采用这种方法可以使得在程序设计时将程序的正常流程与错误处理分开,有利于代码的编写和维护. 在Java异常处理中可以使用多个catch ...

  9. JAVA中的throws和throw的区别

    Java     一直对java中的throws和throw不太理解.最近一直在查这两个方面的资料,算是能明白一点吧.如果我下面的观点哪有不对,希望指出来,我加以改进.         throw:( ...

随机推荐

  1. 2019年java大型项目技术选型

    学习一下 1,公司使用的架构是:SpringCloud + K8S 这一套主流技术,但是还是入门级别的. 还包含apollo  ,xxlJob ,SkyWalking,Cat,GrayLog等 2,G ...

  2. IDEA安装热部署插件JRebel

    首先说下热部署是什么意思吧,简单了说就是在我们对代码进行更改之后,不需要重启项目,重新编译一下就可以直接运行最新的代码的部署方式.既然是部署方式,项目启动部署的时候当然就会和正常情况下不一样啦~ JR ...

  3. idea创建maven项目时一直在 Process Running

    解决方案: 1.设置maven的配置 File--->Settings(Ctrl+Alt+S)--->Build--->Build Tools--->Maven--->R ...

  4. pycharm如何使用&python书写规范

    目录 1.pycharm如何使用 2.python 书写规范 1.pycharm如何使用 #主题的选择 file >> settings >> Editor >> ...

  5. python中jsonpath模块,解析多层嵌套的json数据

    1. jsonpath介绍用来解析多层嵌套的json数据;JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, ...

  6. Duboo整合SpringBoot超级详细例子(附源码)

    dubbo3.0整合SpringBoot例子 dubbo新版本(3.0以上)在相对于 dubbo 旧版本(2.5.2.6.2.7),有很多的不相同的地方. 官方文档也说了新版本的特性: https:/ ...

  7. [bzoj3123]森林

    首先对于询问操作可以使用可持久化线段树来维护,对于连边操作对于两颗树中选取较小的树暴力练到另一个点上,点数可以用并查集然后只修改根的点数即可. 1 #include<bits/stdc++.h& ...

  8. lambda函数实现链表的小根堆

    struct ListNode { int val; ListNode *next; ListNode() : val(0), next(nullptr) {} explicit ListNode(i ...

  9. 前端:WebP自适应实践

    WebP介绍 WebP 是 Google 推出的一种同时提供了有损和无损两种压缩方式的图片格式,优势体现在其优秀的图像压缩算法,能够带来更小的图片体积,同时拥有更高的的图像质量.根据官方说明,WebP ...

  10. maven私服-仓库图