文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java 异常机制Exception和自定义异常

2024-04-02 19:55

关注

异常机制

异常:就是不符合实际需求,在实际中可能不存在也可能不满足实际,所以出现的问题称之为异常。

异常的三种类型:

异常体系结构

Java当中,万物皆对象,Java将异常当作对象来处理,定义了一个基类(父类),java.lang.Throwable作为异常的超类。 java中的异常分为两大类:错误(Error)和异常(Exception)。 错误: Error是由Java虚拟机产生并抛出的,大多数的错误与程序员是没有关系的。 多数情况是Java虚拟机运行错误(Virtual MachineError),Java虚拟机将会终止线程。 这些错误是不可查的,因为在程序的控制能力之外。 异常: 在异常(Exception)分支中有一个重要的子类RuntimeException(运行时异常);

等异常是不检查异常,程序可以选择捕获处理,也可以不处理。 这些异常通常是因为程序逻辑错误引起的,程序应该从逻辑角度尽可能的避免异常的发生。 错误(Error)与异常(Exception)的区别: Error通常是灾难性致命的错误,是程序无法控制和处理的,当出现这些异常时,Java虚拟机(JVM)会选择终止线程;Exception通常情况时可以被程序处理的,并且在程序中,尽可能的去处理和发现这些异常,这些异常通常是程序员的逻辑出现的问题。异常当中,RuntimeException(运行时异常),除此之外的异常统称为非运行时异常。注意的是错误就是错误,异常可以分为运行时异常和非运行时异常。

异常的捕获与抛出

异常处理的5个关键字:

捕获并抛出异常: 举例:数组下标越界异常处理: 

 正如上图所示,并别有输出数组下标的元素,因为元素本身就不存在,产生异常,所以将异常进行捕获并进行了抛出。 值得注意的是在普通异常当中,可以不使用finally,但是try与catch是必须要的,必不可少的,finally在IO流当中可以明显的发现它的作用。比如说在Scanner当中,需要关闭用户输入(scanner.close()),那么finally就起到了很重要的作用。 值得注意的是异常的基类,Throwable是所有异常的父类

如下图所示: 

 catch (Error e)中,括号里面的Error为想要捕获的异常类型,e为一个变量。 在Java当中可以捕获多个异常,Java中进行了提供,如下图所示(当程序中可能出现多个异常时): 下图中我们可以得到结果,该程序是一个异常,而不是一个错误! 

 下面的代码就好像一个循环,如果程序中可能将会出现多个异常,那么就可以在下面的语句中实现,切记的是异常基类可以放在最后。

try{
}catch(){
	System.out.println();
	}catch(){
	System.out.println();
	}finally{
}

下图中是捕获多个异常,但是将异常的基类放在了第一个,导致程序报错,所以后面的捕获失去了意义导致报错。所以异常的基类应该放在最后! 

 注意:我们可以看到上图中出现报错,是因为异常的捕获需要从小到大,但是第一个直接就放了一个最大的基类,所以出现报错。如果说需要捕获多个异常,那么需要从小到大类捕获。 try-catch快捷键的使用:选中需要try的部分:ctrl+alt+T

如下图所示: 

 假如说程序出现异常,我们可以让程序运行结束或者说是退出: 

上面的括号中的数字,任意即可,表示程序异常时退出程序! 在异常当中,我们可以主动的去判断是否有异常,然后再进行抛出异常。

如下图(主动抛出异常): 

 异常的主动抛出一般在方法当中使用!如下图所示: 

如果我们知道会有异常,上面的方法又处理不掉异常,那么可以在方法上抛出异常。

如下图所示: 注意:在方法中抛出异常使用throw,但是在方法上使用throws! 

 在方法体中没有解决掉异常的抛出,在方法上抛出异常,抛出异常后如果不使用try-catch,那么程序就不会继续执行。使用try-catch后,程序仍然会继续执行。

使用try-catch时: 

 不使用try-catch时: 

自定义异常

使用Java内置的异常类可以描述在编程时出现的大部分异常,但是,用户还可以自定义异常。用户自定义异常类,只需要继承Exception。

自定义异常步骤如下:

自定义异常类的书写,在书写的过程当中,或许我们只知道需要继承Exception,但是当继承之后无法入手,我们可以通过看一下异常处理的一些方法,如下图所示: 第一步: 

 第二步:传入一个符合程序,不会抛出异常的值; 

 第三步:打印一个不符合程序设定的值,抛出异常; 

 总图: 1.抛出异常的图: 

 2.没有抛出异常的图: 

总结:

到此这篇关于Java 异常机制Exception+自定义异常的文章就介绍到这了,更多相关Java Exception内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯