异常介绍:

运行时异常非运行时异常

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

一、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. JVM启动参数详解

    JVM启动参数以及具体的解释: -Xmx1024M 最大堆内存 -Xms1024M 初始化堆内存,正常和最大堆内存相同,减少动态改变的内存损耗 -Xmn384M 年轻代内存 -XX:PermSize= ...

  2. hdfs command

    hadoop fs -ls hdfs dfs -mkdir -p /user/$(whoami) hdfs dfs -chown -R $(whoami) /user/$(whoami) hdfs d ...

  3. Django 小实例S1 简易学生选课管理系统 总目录

    python Django实现的一个简易的教务选课系统. 介绍与演示的视频版本已发到我的b站: https://www.bilibili.com/video/BV1er4y1w7ty. 项目已上传到我 ...

  4. pytest框架+conftest.py配置公共数据的准备和清理

    1.pytest介绍:1.自动发现测试模块和测试方法 2.断言使用 assert+表达式即可 3.可以设置会话级.模块级.类级.函数级的fixture 数据准备+清理工作 4.丰富的插件库,==all ...

  5. Linux 软连接与硬连接 区别

    先说结论 软连接相当于快捷方式,访问软连接会被替换为其指向的绝对路径,如果其指向的文件被删除,则无法访问. 硬连接相当于指针,与它指向的文件都指向相同的inode,当其指向的文件被删除,inode由于 ...

  6. OWASP-Top5-(Security Misconfiguration 安全配置错误)

    概述 从上一版的第 6 位开始,90% 的应用程序都经过了某种形式的错误配置测试.随着更多转向高度可配置的软件,看到这一类别上升也就不足为奇了.值得注意的CWE包括CWE-16 Configurati ...

  7. Node.js实现前后端交换——用户登陆

    最近学习了一点Node.js的后端知识,于是作为一个学习前端方向的我开始了解后端,话不多说,开始介绍.首先,如果你想要更好的理解这篇博客,你需要具备html,css,javascript和Node.j ...

  8. 前台json遍历拼装

    //添加角色. $.ajax({ type: "post", url: "/sysRole/list", data: {page: 1, limit: 1000 ...

  9. Java 中的监控与管理原理概述

    点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 程序猿阿朗博客 已经收录,有很多知识点和系列文章. 当前 ...

  10. JS 执行上下文的一次理解

    执行上下文 执行上下文概念 当代码运行时,会产生一个对应的执行环境,在这个环境中,变量会被事先提出来(变量提升),代码从上往下开始执行,就叫做执行上下文. 注:在定义变量是未直接赋值,使用默认值 un ...