网站首页 > 精选教程 正文
异常处理的介绍
在Java程序的运行过程中,如果Java虚拟机检测出一个无法执行的操作,就会产生运行时错误(runtime error)
在Java中,运行时错误会作为异常来抛出。
抛出的异常是一个对象,该对象表示影响程序正常运行的错误或情况。
如果抛出的异常没有被处理,那么程序将会非正常终止并退出。因此,
异常对应用程序的运行至关重要。
- Java程序在运行的过程中,可能会出现各种各样的意外情况。
- 为了表示这些意外情况,Java API中定义了数量众多的各种异常类。基于见名知意的原则,大多数异常类的名称都比较长。
- 在程序的运行过程中,如果产生了某种异常,Java虚拟机就创建该异常类的对象并抛出。
- 因此,异常就是一个从异常类创建的对象,异常处理就是处理该异常类的对象。
- 当异常被抛出时,程序正常的运行流程就会被中断。
- 就像其名称所说的那样,“抛出异常”就是将异常从一个地方传递到另一个地方。
- 在Java中,使用try‐catch来编写异常处理的代码。
- 把可能会产生异常的代码放在try之后的大括号中,而catch则用来捕获某种指定类型的异常,异常处理代码则放在catch之后的大括号中。
关于 try-catch
- 一个try结构可以跟随1到多个的catch,用于捕获不同类型的异常。
- catch后面的小括号中指定了该catch语句处理的异常类。
- 如果try结构中的某一行代码产生了异常,则该异常被catch块所捕获,catch块中的代码将被运行以处理异常。
- 可以看出,catch块的写法有点类似于方法定义,小括号中指定异常的类型,后面的大括号中则包括了处理该类型异常的相应代码。
- catch块中的代码执行完之后,不会返回到try块中,而是执行所有catch块之后的语句。
- 这说明,在抛出异常的情况下,try中的部分代码是被跳过的,不会被Java虚拟机运行。
- 理解这一点非常重要。
- 因此,在try中很少进行变量的定义和初始化,一方面是该变量的作用域仅限于try块,另一方面该变量的定义和初始化语句可能被跳过了,根本没有运行。
大多数异常都是由相应的代码产生、由 Java 虚拟机负责抛出的。
同时,Java开发人员也可以使用 throw 关键字来手动抛出指定类型的异常。
- 异常处理机制能使被调用的方法抛出一个异常给方法的调用者,并由调用者来处理该异常。
- 如果没有异常处理机制,那么被调用的方法就必须自己处理异常或者直接终止程序的运行。
- 但是,通常被调用的方法不清楚在出错的情况下该如何处理,Java API中的方法大多都属于这种情况。
- Java API中的方法可以检测出错误,但是只有方法的调用者才知道出现错误时需要如何进行处理。
- 异常处理机制最根本的优势就是将检测错误与处理错误分离开来,其中,检测错误由被调用的方法完成,而处理错误则由方法的调用者来完成
- 上一篇: Java面试篇基础部分-Java中的异常以及异常处理
- 下一篇: 深入理解java异常处理
猜你喜欢
- 2024-11-20 Java中的异常
- 2024-11-20 小白也能看懂的Java异常处理机制
- 2024-11-20 JVM是如何处理各种异常的呢?
- 2024-11-20 Java异常之异常处理类详解和代码举例
- 2024-11-20 第25天|Java入门有野,异常处理
- 2024-11-20 java安全编码指南之:异常处理
- 2024-11-20 解读Java编程思想--异常处理
- 2024-11-20 Java中异常处理机制的详细解析及其优化示例代码
- 2024-11-20 学习java, 需要知道的异常处理
- 2024-11-20 java异常处理
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)