异常介绍:

运行时异常非运行时异常

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

一、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. linux下端口占用

    1, netstat -tunlp|grep 1235 2,kill -9 18520

  2. M1配置php环境完整版(用于M1芯片的Mac中,php开发环境,比如wordpress、"或wp"、emlog pro、typecho等本地开发环境的配置)

    因为macbook发布的M1是基于arm架构的,导致很多软件在短时间没无法兼容,其中包括php的很多集成开发环境软件.于是需要手动配置.网上的信息也是零七八碎,故制作了这个完整的教程. 本教程基于的m ...

  3. k8s endpoints controller分析

    k8s endpoints controller分析 endpoints controller简介 endpoints controller是kube-controller-manager组件中众多控 ...

  4. JS和JQUERY常见函数封装方式

    JS中常用的封装函数4种方法: 1. 函数封装法: function box(){ } 2. 封装成对象 : let Cookie = { get(){ }, set(){ } } 3. 封装成构造函 ...

  5. 路径前面加与不加"/"的区别

    加"/"是绝对路径, 不加"/"是相对路径.假设你的这个html文件的路径是www.example.com/path/to/html/a.html,那么src= ...

  6. emoji表情等特殊字符处理和存储的两个方案

    方案1.改数据库配置 使之支持emoji表情等特殊字符,小公司或者个人开发还好,大公司用此方案代价较大. 以mysql为例,改配置方法参考:https://blog.csdn.net/u0107373 ...

  7. .NET 5的System.Text.Json的JsonDocument类讲解

    本文内容来自我写的开源电子书<WoW C#>,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master · sogeisetsu/WOW-Csharp (gith ...

  8. fluidity install on Cluster

    fluidity install on Cluster 1.编译器安装 gcc4.6 openmpi python HOME_PATH= /hpcdata1/xiaozhong/ 1.1.gmp &a ...

  9. 【Plink】Error: Multiple instances of '_' in sample ID.?

    目录 前言 原因 解决方法 方法一:修改样本名 方法二:修改--id-delim 方法三:加入--double_id或--const-fid参数 前言 将vcf转化为plink格式时,命令如下: pl ...

  10. MYSQL5.8----M3

    333333333333333333333333333 mysql> DESC user; +----------+---------------------+------+-----+---- ...