您现在的位置是:首页 > 正文

java 捕捉的异常抛出_Java异常抛出和捕获

2024-02-01 05:31:00阅读 2

Java中把非正常情况分为两种,异常(Exception)和错误(Error)。

ffedd511e7a8

异常.png

Error:一般是指与虚拟机相关的问题(虚拟机错误、线程死锁等),这种错误无法回复或不可能捕获

Exception:强制性要求用户必须处理

RuntimeException:非检查异常,是Exception的子类,由用户选择是否进行处理

自定义异常:继承自Exception类,可以使用父类的大量的方法,也可自己编写方法来处理特定的事件。

自定义异常示例:

class MyException extends Exception {

public MyException(String message) {

super(message);

}

}

public class DefinedException {

public static void main(String[] args) {

try {

throw new MyException("\n自定义异常类!");

} catch(MyException e) {

System.out.println(e);

}

}

}

1、 异常抛出

1.1 throws关键字

使用throws将异常进行抛出,throws声明的方法表示该方法不处理异常,而由系统自动将所捕获的异常信息抛给上级调用方法。抛出的异常由上级调用者处理,上级调用者可以进行处理或抛出异常,上级调用者可以抛出更广泛的异常。

如果main方法也不知道如何处理异常就也可以使用throws抛出异常,那么该异常就会交给JVM处理。JVM将打印异常的跟踪栈信息,并中止程序运行。

示例

public class throwsDemo {

public static void main(String[] args) {

int[] a = new int[5];

try {

setZero(a,10);

} catch(ArrayIndexOutOfBoundsException ex) {

System.out.println("数组越界错误!");

System.out.println("异常:"+ex);

}

System.out.println("main()方法结束。");

}

private static void setZero(int[] a,int index) throws ArrayIndexOutOfBoundsException {

a[index] = 0;

}

}

1.2 throw关键字

除了使用throws抛出异常外也可以使用throw自行抛出异常。throw语句可以单独使用, throw语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例。

示例

public class ExceptionDemo {

public static void main(String[] args) {

int[] a = new int[5];

try {

setZero(a,10);

} catch(ArrayIndexOutOfBoundsException e) {

System.out.println("异常:"+e);

}

System.out.println("main()方法结束!");

}

public static void setZero(int[] a,int index) throws ArrayIndexOutOfBoundsException {

System.out.println("setZero方法开始:");

try {

a[index] = 0;

} catch(ArrayIndexOutOfBoundsException ex) {

throw ex;

} finally {

System.out.println("setZero方法结束。");

}

}

}

对应抛出的异常实例,既可以显式捕获该异常,也可完全不理会该异常,把该异常交给该方法调用者处理。

2、 异常捕获

而对于Exception我们乐意使用try...catch进行捕获。try...catch不允许存在单独的try或者catch块,可存在多个catch块。try块中存放业务功能代码,catch块中存放异常处理代码。对于捕获的异常一般可以使用printStackTrace()方法追踪输出至标准错误流。

try...catch后可以添加finally,使用finally可以保证系统退出,finally块中代码绝对执行,捕获异常需要先补货小异常,否则小异常将无法被捕获。

示例

public class DealException {

public static void main(String args[]) {

try { //要检查的程序语句

int a[] = new int[5];

a[10] = 7;//出现异常

} catch(ArrayIndexOutOfBoundsException ex) {//异常发生时的处理语句

System.out.println("超出数组范围!");

ex.printStackTrace();//显示异常的堆栈跟踪信息

} catch(ArithmeticException ex) {//在异常捕捉的过程中要进行两个判断,第一是try程序块是否有异常产生,第二是产生的异常是否和catch()括号内想要捕捉的异常相同。

//可以在一个try语句后跟上多个异常处理catch语句,来处理多种不同类型的异常。

System.out.println("算术运算异常");

ex.printStackTrace();

} finally{ //这个代码块一定会被执行

System.out.println("*****");

}

System.out.println("异常处理结束!");

}

}

参考文档:

网站文章

  • vue-cli中webpack配置之webpack.dev.conf.js

    vue-cli中webpack配置之webpack.dev.conf.js

    配置内容var utils = require('./utils')var webpack = require('webpack')var config = require('../config')v...

    2024-02-01 05:30:53
  • 1. VMware搭建Linux环境,安装配置centos6.5

    1. VMware搭建Linux环境,安装配置centos6.5

    1. 安装VMware,后新建虚拟机2.为我们的虚拟机挂载操作系统3、开启我们的虚拟机,为我们的虚拟机进行安装操作系统4、配置虚拟机连接网络修改linux的mac地址修改mac地址配置文件需要启动我们的linux的虚拟机,然后更改mac地址的配置文件vim /etc/u...

    2024-02-01 05:30:46
  • Hats’Worlds(字典树)

    Hats’WorldProblem Description: A hat’s word is a word in the dictionary that is the concatenation of exactly two other words in the dictionary. You are to find all the hat’s words in a dictionary. I

    2024-02-01 05:30:16
  • Centos 7.6安装Docker

    Centos 7.6安装Docker

    我是在腾讯云轻量服务器上安装的,参考的是docker的官网的教程,链接:Install Docker Engine on CentOS | Docker DocumentationInstructio...

    2024-02-01 05:30:08
  • 卷积计算,反卷积计算,特征图大小计算,空洞卷积计算

    卷积计算,反卷积计算,特征图大小计算,空洞卷积计算

    转自:https://www.jianshu.com/p/09ea4df7a788?utm_source=oschina-app 卷积计算过程(单/RGB多通道) 特征图大小计算公式 转置卷积(反卷积)计算过程 空洞卷积计算过程 卷积计算过程(单/RGB多通道) 假设输入层的大小为 5 x 5,局部感受野(或称卷积核)的大小为 3 x 3,那么输出层一个神经元所对应的计算过程(下文...

    2024-02-01 05:30:01
  • java stringutil 工具类_StringUtil字符串相关的工具类常用方法详解

    java stringutil 工具类_StringUtil字符串相关的工具类常用方法详解

    StringUtil字符串相关的工具类常用方法static int ChineseLength(java.lang.String str)获取一个字符串中中文字符的个数static int countSubStr(java.lang.String string, java.lang.String str)获取字符串str在String中出现的次数static int countSubStrR...

    2024-02-01 05:29:52
  • Java根据对象属性合并

    Java根据对象属性合并

    效果代码实现import java.util.ArrayList;import java.util.List;public class TestDemo { public static void...

    2024-02-01 05:29:23
  • URL最大长度问题

    这几天为解决一个BUG头疼了一段时间,BUG现象如下:一个选择人员的选择控件,当选择多个人时(50多个的时候),返回没有错误现象,而再一次打开的时候就报404错误。看到这个错误非常纳闷,无法下手,只能再一次看控件的代码,在详细看代码时,发现所有的参数都是经过URL传参的,赶紧百度一下URL参数的大小限制(从这个百度开始,我就进入一个误区:参数大小的限制)。结果发现网上都说URL参数的大小为

    2024-02-01 05:29:15
  • c语言是学电脑吗,c语言入门至精通这些天一直有人问我,c语言好学吗?我是个新手...

    c语言是学电脑吗,c语言入门至精通这些天一直有人问我,c语言好学吗?我是个新手...

    这些天一直有人问我,c语言好学吗?我是个新手,该如何学习?其实,这类问题困扰着很多新手。在如何学习之前,我们想简单的了解一下什么是C语言:C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇...

    2024-02-01 05:29:04
  • 组件化开发之git使用

    组件化开发之git使用

    初始化本地代码仓库添加到暂缓区本地仓库状态查询 绿色就是添加到暂缓区的文件本地仓库提交日志提交到原创仓库 这里有个变化 之前是master 现在变成main 理由就是规避种族歧视风险打本地标签提交到远程仓库标签提交到指定的tag查看原创仓库提交的tag本地删除标签远程删除 标签...

    2024-02-01 05:28:35