Java异常
2021/7/25 17:07:56
本文主要是介绍Java异常,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
什么是异常?
异常就是指的程序在运行过程中,发生的不正常(用户操作不当、服务终止、程序BUG……)的程序无法正常运作的情况
异常处理的目的:为了提高程序的稳定性和健壮性,让程序正常的运作下去
java如何处理异常:
- 抓捕异常(推荐):
尝试着抓到对应的异常,在针对具体问题,具体处理 - 抛出异常
捕获异常: try-catch
public class Test2 { public static void main(String[] args) { //实现一个功能:键盘录入两个数,求商: try{ Scanner sc = new Scanner(System.in); System.out.println("请录入第一个数:"); int num1 = sc.nextInt(); System.out.println("请录入第二个数:"); int num2 = sc.nextInt(); System.out.println("商:"+num1/num2); }catch(Exception ex){ System.out.println("对不起,程序出现异常!"); } System.out.println("----谢谢你使用计算器"); } }
把可能出现异常的代码放入try代码块中,然后将异常封装为对象,被catch后面的()中的那个异常对象接收,接收以后:执行catch后面的{}里面的代码,然后try-catch后面的代码,该怎么执行就怎么执行。
try中没有异常,catch中代码不执行
try中有异常,catch进行捕获
如果catch中异常类型和你出的异常类型匹配的话:走catch中的代码进行捕获
如果catch中异常类型和你出的异常类型不匹配的话:不走catch中的代码没有捕获成功,程序相当于遇到异常了
try中如果出现异常,然后用catch捕获成功的话,那么try中后续的代码是不会执行的
如果catch捕获异常成功,那么try-catch后面的代码该执行还是执行没有影响
- try中出现异常以后,将异常类型跟catch后面的类型依次比较,按照代码的顺序进行比对,执行第一个与异常类型匹配的catch语句
- 一旦执行其中一条catch语句之后,后面的catch语句就会被忽略了!
- 在安排catch语句的顺序的时候,一般会将特殊异常放在前面(并列),一般化的异常放在后面。
先写子类异常,再写父类异常
try{ }catch(){ }catch(){ }....
java异常类的继承关系
Throwable - >Error(错误)
Throwable - >Exception(异常)- >…
Exception 分为RuntimeException、非运行时异常、IOException
当异常被捕获到是,异常对象就会自动创建
e.getMessage() // 输出异常信息
e.printStackTrace() // 在控制台上打印输出异常的错误情况(调用栈情况)
自定义异常
自定义的异常可以继承:运行时异常也可以继承检查异常:
如果继承的是运行时异常,那么在使用的时候无需额外处理
如果继承的是检查异常,那么使用的时候需要try-catch捕获或者throws向上抛
throw和throws的区别:
(1)位置不同:
throw:方法内部
throws: 方法的签名处,方法的声明处
(2)内容不同:
throw+异常对象(检查异常,运行时异常)
throws+异常的类型(可以多个类型,用,拼接)
(3)作用不同:
throw:异常出现的源头,制造异常。
throws:在方法的声明处,告诉方法的调用者,这个方法中可能会出现我声明的这些异常。然后调用者对这个异常进行处理:
要么自己处理要么再继续向外抛出异常
异常的分类:
运行时异常:继承了RuntimeException的异常
特点是:只有在运行时,才能知道是否会有异常
非运行时异常(编译型异常):
特点是:在编译时,就会报错,必须处理!!!
finally关键字:
特点:不管是否存在异常,finally部分必须要执行
System.exit(0);//终止当前的虚拟机执行,只有这个可以强制不执行finally
这篇关于Java异常的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南
- 2024-12-21功能权限实战:新手入门指南